기초적인 스프링 강의를 다 들었다면 누구나 설정할 수 있겠지만

차분히 하나씩 집어 보기로 한다.


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도 필요하다.

+ Recent posts