<pom.xml>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
기존 Hikari Pool에 myBatis 설정을 추가하면서 여러가지 설정과 트랜잭션 매니저와 같은 것들도 설정이 되었기 때문에
해당 부분은 공통으로 사용하여 생략하고 JPA 관련 설정만 추가한다.
<공통>
<myBatis>
<JPA>
<DataBaseConfig.java>
@Configuration
@EnableConfigurationProperties
@MapperScan(basePackages = "${패키지명}")
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(
basePackages = "${패키지명}.*.jpa",
entityManagerFactoryRef = "entityManagerFactory"
)
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class DataBaseConfig {
// ... 기존 소스 생략
@Primary
@Bean
public EntityManagerFactory entityManagerFactory(@Qualifier("dataSource") DataSource dataSource) {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan("${패키지명}.*.jpa");
final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
final HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.physical_naming_strategy", SpringPhysicalNamingStrategy.class.getName()); // 물리적 명칭 전략
properties.put("hibernate.implicit_naming_strategy", SpringImplicitNamingStrategy.class.getName()); // 암시적 명칭 전략
em.setJpaPropertyMap(properties);
em.afterPropertiesSet();
return em.getObject();
}
}
기존 코드 그대로, DB 정보만 변경하여 사용
spring.datasource.type과 같은 Prefix는 DataBaseConfig.java에서 지정하는 Prefix에 따라 달라진다.
spring.datasource.type={데이터베이스타입}
# oracle
spring.datasource.driver-class-name={데이터베이스 드라이버}
# oracle.jdbc.Driver
spring.datasource.url={JDBC 주소}
# jdbc:{db타입}:thin:@{HOST 주소}:{포트번호}/{SID}
spring.datasource.username={데이터베이스 이름}
# smartdoodle
spring.datasource.password={비밀번호}
spring.datasource.hikari.connection-init-sql={테스트 쿼리}
# oracle = select 1 from dual
# mysql = select 1
# 풀 최대 사이즈
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
# 유효성 시간 제한
spring.datasource.hikari.validation-timeout=5000
# 최대 생명주기 시간
spring.datasource.hikari.max-lifetime=250000
spring.datasource.hikari.idle-timeout=230000
# 커넥션 시간 초과
spring.datasource.hikari.connection-timeout=60000
# 초기 시작 실패 시간 제한
spring.datasource.hikari.initialization-fail-timeout=5000
# ... 데이터베이스 연결과 무관한 소스 생략
#JPA 설정
# 쿼리 로그 레벨 설정
logging.level.org.hibernate.SQL=TRACE
# 바인딩 변수 값 출력
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 출력 값 변수별 출력
# logging.level.org.hibernate.type.descriptor.sql.BasicExtractor=TRACE
# 쿼리 로그 출력 설정
spring.jpa.properties.hibernate.show_sql=true
# 쿼리 로그 포맷 설정
spring.jpa.properties.hibernate.format_sql=true
# 쿼리 로그 주석 표시
# spring.jpa.properties.hibernate.use_Sql_comments=true