기초적인 스프링 강의를 다 들었다면 누구나 설정할 수 있겠지만
차분히 하나씩 집어 보기로 한다.
JDBC : 자바와 데이터베이스를 연결시켜주는 기술
Java DataBase Connectivity
우리가 꼭알아야 할 것은 커넥션 풀을 만들어주는 DataSource
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.1.RELEASE</version>
</dependency>
를 받아서 보면 DataSource 관련 클래스가 있다. DriverManagerDataSource가 있다.
설정을 프로퍼티에 넣어서 빈 등록하면 된다.
apache commons에서 나온 SimpleDataSource나 BasicDataSource같은 것들도 있다.
여기서는 최근에 빠르다고 하는 hikari를 써보겠다.
메이븐
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.2</version>
</dependency>
빈 등록
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
<property name="dataSourceClassName" value="com.mysql.jdbc.Driver" />
<property name="dataSourceProperties">
<props>
<prop key="url" >jdbc:mysql//localhost:3306/wook</prop>
<prop key="user">root</prop>
<prop key="password">root</prop>
</props>
</property>
</bean>
SqlSession : statement를 만들고 실행한다.
jsp부터 공부했다면 Statement와 execute() 메서드, ResultSet들을 알것이다.
이를 편리하게 쓰게 해주는 ibatis의 클래스다.
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
</bean>
openSession이란 메서드로 SqlSession을 가져온다.
이렇게 오픈하고 클로즈하는게 귀찮을 수 있다.
<bean class="org.mybatis.spring.SqlSessionTemplate" >
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
SqlSessinTemlate을 쓰면 오픈, 커밋, 클로즈의 귀찮음을 피할 수 있다.
이렇게만 설정하면
org/apache/ibatis/transaction/TransactionFactory 가 없다고 에러가 발생한다.
많이 봤던 getConnection(), close(), commit(), rollback()같은 메서드가 있는 인터페이스다.
메이븐 등록을 해준다.
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
다른 dataSource를 쓴다고 spring jdbc를 메이븐 주입안했다면
org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy
를 찾는 에러가 발생한다. spring-jdbc도 필요하다.