하는 데 의의를 둬春
LazyInitializationException @Transactional도 먹히지 않을 때 본문
velog
velog.io
다음의 포스트를 보고 JPA에 MyBatis를 추가해서 사용하고 있었다.
그런데 엔티티에 FetchType.LAZY를 사용한 부분에서 LazyInitializationException이 발생했다.
이상하게 FetchType.EAGER를 사용하면 동작하는데, 권장되는 방법인 @Transactional을 추가하면 다시 안된다.
이건 뭔가 문제가 있다...😢
/* 코드 생략 */
public class DatabaseConfig {
/**
* datasource
*/
@Bean(name= "dataSource")
public HikariDataSource dataSource(@Qualifier("hikariConfig") HikariConfig hikariConfig) {
return new HikariDataSource(hikariConfig);
}
@Bean(name= "jpaDataSource")
public HikariDataSource jpaDataSource(@Qualifier("hikariConfig") HikariConfig hikariConfig) {
return new HikariDataSource(hikariConfig);
}
/**
* jpa entityManagerFactory
*/
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManager(@Qualifier("jpaDataSource") DataSource dataSource) {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan("com.sample.model");
HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(adapter);
Map<String, Object> properties = new HashMap<>();
properties.put("hibernate.ddl-auto", "update");
properties.put("hibernate.generate-ddl", true);
properties.put("hibernate.show-sql", false);
properties.put("hibernate.physical_naming_strategy", SpringPhysicalNamingStrategy.class.getName());
properties.put("hibernate.implicit_naming_strategy", SpringImplicitNamingStrategy.class.getName());
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
em.setJpaPropertyMap(properties);
return em;
}
}
기존엔 이렇게 같은 Hikari Datasource에 빈 이름을 다르게 주어
sqlSessionFactory에 datasource, entityManagerFactory에 jpaDatasource를 주었는데
jpaDatasource를 지우고 하나로 통일시키니 @Transactional이 예외상황 없이 잘 먹혔다.
다음엔 또 무슨 오류가 발생할까...ㅎㅎㅎㅎㅎ
'Java' 카테고리의 다른 글
타이머로 5분 뒤 이메일 전송 구현하기 (ScheduledExecutorService) (0) | 2024.02.07 |
---|---|
Dropzone을 이용한 파일 업로드 및 AWS S3 스토리지 저장 (작성중) (1) | 2023.02.20 |
[Java] Map을 VO로, VO를 Map으로 변환하기 (0) | 2023.01.17 |
[Java] Maven profile로 실행환경 분리하기 (0) | 2022.07.14 |
[Eclipse] File Search에서 열었던 파일 고정하기 (0) | 2022.02.10 |
Comments