코딩하는 오징어

Spring web mvc & jpa - hibernate 빈 설정 (MAVEN) 본문

Framework/Spring

Spring web mvc & jpa - hibernate 빈 설정 (MAVEN)

코딩하는 오징어 2018. 7. 15. 18:47
반응형

Spring data jpa & hibernate를 이용하기 위한 빈 설정에 대해 알아보자. 먼저 코드와 dependency부터 보자.


@Bean(destroyMethod = "close") public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setGenerateDdl(true); vendorAdapter.setShowSql(true); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan("org.codingsquid.isolation.entity"); factory.setDataSource(dataSource); factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver()); factory.setJpaProperties(jpaProperties()); factory.afterPropertiesSet(); return factory; } @Bean public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { JpaTransactionManager txManager = new JpaTransactionManager(); txManager.setEntityManagerFactory(entityManagerFactory); return txManager; } @Bean public HibernateExceptionTranslator hibernateExceptionTranslator() { return new HibernateExceptionTranslator(); } private Properties jpaProperties() { Properties properties = new Properties(); properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect"); properties.put("hibernate.format_sql", true); return properties; }

LocalContainerEntityManagerFactory : 스프링이 직접 제공하는 컨테이너 관리 EntityManager를 위한 EntityManagerFactory를 만들어준다. 이 방법을 이용하면 JavaEE 서버에 배치하지 않아도 컨테이너에서 동작하는 동작하는 JPA의 기능을 활용할 수 있을 뿐만 아니라, 스프링이 제공하는 일관성 있는 데이터 액세스 기술의 접근 방법을 적용할 수 있고 스프링의 JPA 확장 기능도 활용할 수 있다.


HibernateJpaVendorAdapter : JPA의 구현체인 Hibernate를 이용하려면 이를 등록해야한다.


Properties : java properties를 이용하면 persistence.xml을 대신해서 설정 값을 적용 할 수있다.


setPackageToScan : 이 함수는 Spring Boot에서 @EntityScan 애너테이션과 같은 역할을 한다. entity들을 스캐닝 하는 것이다.


pom.xml에는 다음을 추가하여야 한다.


<dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-jpa</artifactId>

<version>1.9.0.RELEASE</version>

</dependency>

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-entitymanager</artifactId>

<version>4.3.8.Final</version>

</dependency>

반응형
Comments