자바에서는 기본적으로 DataSource 인터페이스를 사용하여 커넥션풀을 관리한다.
Spring에서는 사용자가 직접 커넥션을 관리할 필요없이 자동화된 기법들을 제공하는데
SpringBoot 2.0 이전에는 tomcat-jdbc를 사용하다,
현재 2.0이후 부터는 HikariCP를 기본옵션으로 채택 하고있다
JDBC를 이용하면 데이터베이스에 비 종속적인 DB연동로직을 구현할 수 있다. 즉 mysql을 쓰다가 postgre로 얼마든지 옮길 수 있다는건데 이는 jdbc api가 여러 DB Driver를 호환할 수 있는 인터페이스를 제공하기 때문이다.
쿼리를 실행하기 전과 후에 많은 코드를 작성해야한다. (연결생성, 명령문, 등등)
예외처리코드와 트랜잭션 처리등에 시간과 자원이 소모
jdbc에서 발생하는 에러는 Runtime Exception이다. 따라서 모두 예외처리를 해줘야함
이러한 문제점을 보완하여 생겨난것이 Spring JDBC
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setJpaVendorAdapter(hibernateJpaVendorAdapter());
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPackagesToScan("me.xyzlast.bh.entities");
// NOTE : Properties를 이용해서 Hibernate property를 설정합니다.
// entityManagerFactoryBean.setJpaProperties();
return entityManagerFactoryBean;
}
@Bean
public HibernateJpaVendorAdapter hibernateJpaVendorAdapter() {
HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
hibernateJpaVendorAdapter.setShowSql(true);
return hibernateJpaVendorAdapter;
}
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager(entityManagerFactory().getObject());
jpaTransactionManager.setDataSource(dataSource());
return jpaTransactionManager;
}