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로 지정해서 호출한다




블로그 이미지

리딩리드

,
donaricano-btn

Mapper 인터페이스(Mapper interface)

- SQL을 호출하는 프로그램을 타입 세이프 하게 기술하고자 할때

- Mapper 인터페이스를 사용하지 않으면, SQL을 호출하는 프로그램은 SqlSession의 메소드의 인수에 문자열로 namespace.SQL_ID 를 지정


1. Mapper 인터페이스 사용하지 않을 때

- 문자열로 지정하기 때문에 오타에 의한 버그가 숨어있다


2. Mapper 인터페이스 사용

- Mapper 인터페이스는 매핑 파일에 기술한 SQL자바의 인터페이스를 통해 지정

- PetMapper 인터페이스 = Mapper인터페이스 

- PetMapper 인터페이스는 개발자가 작성

1) PetMapper 인터페이스

2) Mapper 인터페이스 호출


3. 애노테이션

- Mapper 인터페이스는 애노테이션을 이용할 수 있다

- 매핑 파일에서 기술 했던 SQL이나 OR 매핑을 기술

1) 애노테이션

- 20 여개의 애노테이션이 있으며 동적 SQL은 적용되지 않는다

블로그 이미지

리딩리드

,