반응형
SqlSessionFactory

SqlSessionFactory 는 SqlSession 인스턴스를 생성하기 위해 사용할 수 있는 6개의 메소드를 가지고 있다.

6개의 메소드가 선택해서 사용하는 것들을 보자.

⊙ Transaction : 세션에서 트랜잭션 스코프 또는 자동 커밋을 사용하고 싶은가?

⊙ Connection : 설정된 DataSource 에서 Connection 을 획득하고 싶은가?

⊙ Excution : PreparedStatements 그리고/또는 배치(Insert, Delete 를 포함해서) 업데이트를 재사용 하고 싶은가?

오버로드된 메소드인 openSession()이 3가지를 적절히 혼합해서 사용할 수 있다.

SqlSession openSession();

SqlSession openSession(boolean autoCommit);

SqlSession openSession(Connection connection);

SqlSession openSession(TranseactionIsolationLevel level);

SqlSession openSession(ExecutorTye execType,);

SqlSession openSession(ExecutorTye execType, TranseactionIsolationLevel level);

SqlSession openSession(ExecutorTye execType, boolean autoCommit);

SqlSession openSession(ExecutorTye execType,Connection connection);

Configuration getConfiguration();


파라미터를 가지지 않는 디폴트 openSession() 메소드는 다음과 같은 성격을 가진 SqlSession을 만들것이다.

☞  트랜잭션 스코프는 시작될 것이다.

☞  Connection 객체는 활성화된 환경에 의해 설정된 DataSource 인스턴스를 획득 할 것이다.

☞  트랜잭션 격리 레벨은 드라이버나 데이터소스가 디폴트로 제공하는 옵션을 사용할 것이다.

☞  PreparedStatements는 재사용되지 않을 것이다. 그리고 update 또한 배치 처리 되지 않을 것이다.

메소드 대부분은 그 이름과 파라미터가 그 역할을 충분히 설명한다. 자동커밋을 활성화 하기 위해서, autoCommit 파라미터에 "true" 값을 셋팅하라. 자체적인 커넥션을 제공하기 위해서는 connection 파라미터에 Connection 인스턴스를 셋팅하라.

Connection 과 autoCommit 둘다 셋팅하는 것은 오버라이드 하지 않는다. 왜냐하면 MyBatis는 제공된 connection 객체를 셋팅할 때마다 현재 사용중인 것을 사용한다. MyBatis는 TransactionIsolationLevel 이라고 불리는 트랜잭션 격리 레벨을 위한 자바 enum 래퍼를 사용한다. JDBC를 5가지를 지우너한다(NONE, READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE)

새롭게 보일수 있는 하나의 파라미터는 ExecutorType 이다. enum으로는 3개의 값을 정의한다.

ExecutorType.SIMPLE

이 타입의 실행자는 아무것도 하지 않는다. 구문은 실행마다 새로운 PreparedStatement 를 생성한다.

ExecutorType.REUSE

이 타입의 실행자는 PreparedStatement 를 재사용할 것이다.

ExecutorType.BATCH

이 실행자는 모든 update 구문을 배치처리하고 중간에 select 가 실행될 경우 필요하다면 경계를 표시한다. 이러한 과정은 행위를 좀더 이해하기 쉽게 하기 위함이다.

→NOTE : SqlSessionFactory 에서 언급하지 않는 한개 이상의 메소드가 있다. getConfiguration() 메소드 인데. 이 메소드는 런타임시 MyBatis 설정을 조사하는 Configuration 인스턴스를 리턴할 것이다.


반응형

'IT > 언어' 카테고리의 다른 글

Mybatis + java 연동 기초  (0) 2014.06.19
JDBC 설정  (0) 2014.06.19
[LIB] ESAPI 로 XSS 방어  (0) 2014.05.30
시큐어 코딩 가이드  (0) 2014.05.29
ByteUtil.java  (0) 2014.05.29

+ Recent posts