Spring/MyBatis

MyBatis 객체의 생명 주기

단순대왕 2014. 11. 6. 11:12

SqlSessionFactoryBuilder

SqlSessionFactory 생성 후 유지할 필요 없음.

메소드 Scope 유지(메소드 지역변수)


SqlSessionFactory

한번 만든 뒤, SqlSessionFactory는 어플리케이션을 실행하는 동안 존재해야만 한다.

삭제하거나 재생산 할 필요가 없다.

어플리케이션 Scope 유지

싱글턴 패턴이나 static 싱글턴 패턴을 사용

구글 Guice 나 Spring 같은 의존성 삽입(DI) 컨테이너를 선호


SqlSession

각각의 쓰레드는 자체적으로 SqlSession 인스턴스를 가져야 한다.

SqlSession 인스턴스는 공유되지 않고 쓰레드에 안전하지도 않다.

요청 또는 메소드 Scope 유지

HTTP 요청을 받을 때마다 만들고, 응답을 리턴할때마다 SqlSession을 닫을 수 있다.

SqlSession을 닫는 것은 중요하다.

finally 블록으로 닫는다.


Mapper

Mapper는 매핑된 구문을 바인딩 하기 위해 만들어야 할 인터페이스

mapper 인터페이스의 인스턴스는 SqlSession에서 생성

SqlSession 과 동일한 Scope 유지

사용할 메소드가 호출되면 생성되고 끝난다.