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
트랜잭션 은 컨트롤러에서 서비스 클래스의 메소드를 호출시 트랜잭션이 시작이며
서비스의 클래스의 메소드를 마치고 컨트롤러로 되돌아갈 때가 트랜잭션의 종료이다.
댓글
댓글 쓰기