코딩하는 오징어
Spring web mvc & jpa - hibernate 빈 설정 (MAVEN) 본문
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>
'Framework > Spring' 카테고리의 다른 글
Spring boot starter test 와 Junit5를 이용한 테스트 (0) | 2018.08.24 |
---|---|
Spring & JPA의 Hibernate 설정시 주의 사항 & CandidateComponentsIndexLoader 클래스 (0) | 2018.07.28 |
자동인식을 이용한 빈등록: 스테레오타입 애노테이션과 빈스캐너 (0) | 2018.03.28 |
intellij에서 Spring 4 초기 환경 세팅에서 디비연동까지 한 번에 하기 (Maven & Mysql & Mybatis) (7) | 2018.03.09 |
Spring 4 하나 이상의 Dispatcher Servlet 설정하기 (1) | 2018.03.07 |