정말 DB연동에는 별에별게 다있구나
떠오르는 단어가있다.
Connection
ConnectionPool
JDBCTemplate
DataSource
SqlSessionFactory (Mybatis)
SqlSessionTemplate (Mybatis)
참고로 내프로젝트에서는 이모든걸 다썻어서
나는 Mybatis로만 남기고싶어서 구분해내는 작업이 필요했다
우선 DB와 연동하는데에있어서 단순히 Connection만 있어도 가능하다
하지만 웹사이트를 만든다면, 수많은 사람이 이용할거고 그 각각에 사람들이
DB연동을 해야한다 (무언가 기록하고 읽고 수정하고 삭제하고 하려면)
근데 이렇게 노빠구마인드로 사용하면 DB가 아파한다.
그래서 ConnectionPool이라는걸 사용한다 미리 DB와 맺어놓는방식이다
미리 여러개를 맺어놓고 사용하는 방식이다
근데 DataSource가 이 ConnectionPool을 관리해주는 매니저같은거다
고로 DataSource를 사용해야하며 setter주입으로 DB내용 driverClass, url, username, password 처리해줘야한다
그리고.. 여기서 SqlSessionFactory는 SqlSession를 만드는 친구인데
이걸로 Spring과 Mybatis를 서로 연결해주는거다
그리고 두가지 setter주입을 해줘야한다
1. Mybatis 환경설정파일을 setter 주입한다
2. DataSource (ConnectionPool 관리자)를 setter 주입한다
SqlSession는 Mybatis로 DAO를 구성할때 사용하는 친구이다
그리고 JDBCTemplate, SqlSessionTemplate 여기보면
Template라는게 공통으로 보인다
Template는 뭘까..하고 책좀 뒤져보았다
servlet으로 웹프로젝트를 만들때 생각해보면
DAO에서 insert,update,delete 등등에서
똑같이 DB연동하는 반복되는코드가있었다 이러한 과정을 Template API한태 싹 넘겨버리고
개발자는 SQL구문만 신경쓰게된다
그러니까 servlet/jsp -> spring -> spring & mybatis 로 가면 갈수록
개발자에게 더 편해지는 기능이많은것같다
[ pom.xml ]
결론적으로 Spring 과 Mybatis을 연동하고 각기능을 다쓰려면
다음과같이 라이브러리를 추가하자!
이거는 항상 셋트로 네개를 기억하자!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
|
cs |
[root-context.xml]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<context:property-placeholder location="classpath:config/database.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:sql-map-config.xml" /> <!-- sql-map-config.xml은 Mybatis 환경설정파일이다 -->
<property name="dataSource" ref="dataSource" />
</bean>
<bean class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSession"></constructor-arg>
</bean>
|
cs |
BasicDataSource에
DB관련 정보를 입력하는데 " "사이에 입력하면되지만 저는 프로퍼티를 이용해서 넣었습니다.
프로퍼티를 이용할때는 "${ }"식으로 입력합니다
SqlSessionFactoryBean에 setter주입과
SqlSessionTemplate에 생성자 주입을 볼수있다 .