본문 바로가기

Study/Setting & Tip

DAY 152. Spring에 Mybatis 연동하기

 

00. 개요

 

- MemberController로 부터 사용자로부터 id와 pwd 를 넘겨 받으면서 서비스에게 id, pwd가 맞으면 member 객체를 달라고 요청

 

- service에는 본인이 직접 처리하지 않고, dao에게 session과 id를 넘겨주면서 DB에서 조회할 수 있도록 하자.

 

- 즉, mybatis와 연동해서 DB에서 데이터를 가져오는 실습

 

01. pom.xml 수정

 

1) pom.xml에 <DB 관련 라이브러리> 추가

 

2) Maven Repository에서 "spring-jdbc" 검색

 

https://mvnrepository.com/artifact/org.springframework/spring-jdbc/5.3.14

 

5.3.14 버전을 pom.xml에 추가

버전 정보는 위에 선언해 놓은 것을 활용할 수 있도록 ${org.springframework-version} 으로 바꿈

 

 

3) "MyBatis Spring" 검색 

https://mvnrepository.com/artifact/org.mybatis/mybatis-spring/2.0.6

 

2.0.6 버전을 추가 

 

 

4) "dbcp2" 검색 

https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2/2.9.0

 

커넥션 풀을 위한 라이브러리 2.9.0 버전을 추가

 

 

<!-- DB -->
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4</version>
</dependency>

<!-- spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>


<!-- mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

<!-- mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.6</version>
</dependency>


<!-- for Connection pool dbcp2 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.9.0</version>
</dependency>

 

이 부분 추가하였음

 


02. mybatis-context.xml 생성

- mybatis 연동에 사용할 bean들을 모아놓을 mybatis-context 파일 생성하고, root-context에서 이 파일을 참조할 수 있도록 import할 것이다.

 

 

 

 

03. root-context.xml 

<import resource="mybatis-context.xml"/> 작성

 

 

 

- 기존에는 sql 관련 객체들을 직접 만들어서 getSession()으로 호출했다면,

bean으로 등록해놓고 ApplicationContext로부터 주입받아서 사용할 것이기 때문에, mybatis-context.xml에 bean으로 등록하도록 하자.

 

- 즉, 기존에 mybatis 실습때 SqlSessionTemplate 작성했던 부분을 bean으로 등록한다.

 

 

04. mybatis-context.xml 에 bean 등록

 

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
    destroy-method="close"
    p:driverClassName="oracle.jdbc.driver.OracleDriver"
    p:url="jdbc:oracle:thin:@localhost:1521:xe"
    p:username="WEB"
    p:password="WEB"
/>

<bean id="mybatisConfig" class="org.apache.ibatis.session.Configuration" 
    p:jdbcTypeForNull="NULL"
/>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" 
    p:configuration-ref="mybatisConfig"
    p:mapperLocations="classpath:mappers/**/*.xml"
    p:typeAliasesPackage="com.kh.mvc.*.model.vo"
    p:dataSource-ref="dataSource"
/>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"
    c:sqlSessionFactory-ref="sqlSessionFactory"
/>

 

<dataSource> : 데이터베이스에 연결할 때 Connection Pool을 사용할 수 있게 해주는 객체이다. 여기에서 커넥션을 관리해준다. 이 때, dbcp2 아파치에서 구현해준 dataSource를 사용한다.

 

<sqlSessionFactory> 등록 

- ** : 현재 경로 포함해서 상위 지정한 경로의 모든 하위 경로를 의미

- * : 현재 경로를 의미