donaricano-btn

Mybatis3+Spring(3)- Transaction of Spring


- 스프링이 제공하는 DataSourceTransactionManager를 사용

-  트랜잭션 매니저가 설정되어 있으면 스프링의 트랜잭션 기능인 선언적 트랜잭션이나 명시적 트랜잭션 이용가능

1) DataSourceTransactionManager


블로그 이미지

리딩리드

,
donaricano-btn

Mybatis3+Spring(2)- SqlSession 인젝션


- SqlSession의 오브젝트를 Bean으로 생성해서 애플리케이션에 인젝션

- 인젝션 방법에 두가지가 있다. SqlSessionTemplate, SqlSessionDaoSupport


1. SqlSessionTemplate

- SqlSession 인터페이스 구하며 진짜 SqlSession의 Proxy로 동작

1) SqlSessionTemplate


- 컨스트럭터에 인젝션 하는 것은 앞의 SqlSessionFactory이다

2) SqlSession인젝션

 

- @Autowired로 인젝션

- SqlSession의 실체는 조금 전에 Bean으로 정의한 SqlSessionTemplate 클래스의 오브젝트다


2. SqlSessionDaoSupport

- SqlSession 오브젝트를 제공하는 Getter 메소드를 가진 추상 클래스이다

- 애플리케이션의 클래스는 SqlSessionDaoSupport를 상속해서 이용

 

1) getSqlSession()

- SqlSessionDaoSupport가 제공하는 SqlSession을 얻어오는 Getter 메소드이다

블로그 이미지

리딩리드

,
donaricano-btn

Mybatis3+Spring(1)-SqlSessionFactory를 Bean로 정의

- 스프링 연계를 통해 SqlSession과 Mapper 인터페이스의 오브젝트를 Bean으로 생성하고 다른 Bean에 인젝션 한다

- 데이터 엑세스 시의 예외를 스프링 범용 데이터 엑세스 예외로 변환

- 스프링 트랜잭션 기능 사용


1. SqlSessionFactory를 Bean으로 정의

- SqlSessionFactory를 Bean으로 정의 해야한다

- SqlSessionFactoryBean이라는 FactoryBean을 이용한다


1) dataSource

- 데이터소스 bean이다

2) configLocation

- Mybatis 설정 경로이다

- 설정 파일에 설정한 settings 태그(실행기 행동에 관한 설정)와 typeAliases 태그(별칭) 내용 반영

- enviroment 태그(데이터베이스 접속 정보) 무시

3) mapperLocations

- 매핑파일의 경로지정

- Bean 정의파일로 관리하는 일관되게 지정

- 와일드 카드 사용 가능

 

블로그 이미지

리딩리드

,
donaricano-btn

트랜잭션 처리(Transaction)

- void commit(), void commit(boolean force)

- void rollback(), void rollback(boolean force)


1. boolean 없는 메소드

- 트랜잭션 사이에 INSERT, UPDATE, DELETE발행 되지 않으면 실제로 commit이나 rollbak이 데이터베이스에 지시안됨


- 트랜잭션을 시작하는 기술이 없다

- SqlSession 오브젝트 생성 후에 내부에서 Connection 오브젝트를 얻을 때 트랜잭션이 시작

- auto-commit 이 데이터 베이스에 설정되어 있다면 트랜잭션 처리 못함

2. boolean 있는 메소드

- INSERT, UPDATE, DELETE와 상관없이 반드시 데이터베이스에 commit과 rollback을 지시 하고 싶을때 사용

- true로 지정해서 호출한다




블로그 이미지

리딩리드

,