Spring - MyBatis 연동 방법

STS Spring 3.0 MVC 기준 방식
Oracle 사용


1.Pom.xml 메이븐 의존성 추가


maven reposistory 사이트 참조 및 검색후 추가

<!-- oracle ojdbc driver repository -->
<repositories>
<repository>
<id>mesir-repo</id>
<url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>
</repository>
</repositories>


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


<!-- oracle driver -->
<!-- ojdbc -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>

<!-- dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>


의존성 추가후에 POM.XML 파일이 x표시로 에러가 뜰시에는

<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

빨간부분 밑에 <org.aspectjweaver-version>1.7.0</org.aspectjweaver-version> 를 추가하자

2. DB 설정

2.1 DB 실질적인 설정 정보 생성


    src/main/resources 에 persistence_property 를 생성하여 아래 와 같이 작성한다.

    driver=oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@localhost:1521:xe
    username=scott
    password=tiger
    initialSize=5
    maxActive=30


2.2 DB bean 등록


    location = "classpath:persistence.properties"
    실질적인 persistence.properties 파일의 위치 설정 (src/main/resources)

    dataSource 는 트랜젝션의 설정후 name 부분을 참조

    sqlSessionFactory 와 sqlSession 는 mybatis 생성시 의무적으로 기술한다고 생각하면된다.



<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="kr.ac.busanit.persistence"/>
</bean>
이부분도 추가해줘야 된다.
persistence.properties 를 스캔해주기 위한 bean 이다.
2.3 servlet-context.xml 에 트랜젝션 설정


웹 애플리케이션의 트랜잭션은 크게 두 종류의 트랜젝션을 의식해야한다.

1) 다중 요청에 걸친 트랜잭선 (롱 트랜잭션)
    ex)  현 블로그 구독자도 이용해 본적이 있는 온라인으로 물건을 구입후 집으로 배송되고
          은행에서 대금이 인출 되는 것도. 일종의 롱 트랜잭션이라 한다.

2) 하나의 요청 안에서 트랜잭션 처리 (쇼트 트랜잭션)
    ex)주문 확정 요청을 받아 발주 테이블과 고객 테이블, 재고 테이블을 갱신하는 방식

-----------------------------------------------------------------
일반적으로 데이터베이스가 하나일 때는 로컬 트랜잭션이라 하고
데이터 소스가 다중일때는 글로벌 트랜잭션이라 한다.

필자의 블로그 에서는 쇼트 트랜잭션을 사용한다.


트랜잭션의 START & END
트랜잭션 은 컨트롤러에서 서비스 클래스의 메소드를 호출시 트랜잭션이 시작이며
서비스의 클래스의 메소드를 마치고 컨트롤러로 되돌아갈 때가 트랜잭션의 종료이다.


댓글

이 블로그의 인기 게시물

리눅스 시스템 시작시에 자동 실행할 파일 등록하기

tomcat 구동 시 /dev/random 블로킹 이슈