[ 최종 수정일 : 2023년 09월 20일 ]

 

 

 

SqlSessionFactory는 사용자가 정의한 설정파일(mybatis-config.xml)을 바탕으로 SqlSession 객체를 생성합니다.

 

 

MyBatis Official Document


 

 

먼저 SqlSessionFactory 객체를 생성하고, 해당 객체를 활용하여 실제 OCI(DB)와의 연결(Session)을 획득합니다.

 

 

1. SsqlSessionFactory 객체 생성

SqlSessionFactory 필드를 선언하고 전처리 메서드에서 객체를 생성 후 저장합니다.

@Log4j2
@NoArgsConstructor

@TestInstance(Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class SqlSessionFactoryBuilderTests {
    private SqlSessionFactory sqlSessionFactory;


    @BeforeEach
    void testCreateSession() throws IOException {
        log.trace("testCreateSession() invoked.");

        // 1. SqlSessionFactoryBuilder 객체 생성		
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        log.info("\t session: {}", builder);
		
        // 2. MyBatis의 설정파일의 레퍼런스를 획득 후, 입력 스트림 객체에 할당
        String config = "mybatis-config.xml";	// 설정파일        
        @Cleanup InputStream is = Resources.getResourceAsStream(config);
		
        
        // builder 객체에게 입력 스트림 객체를 전달해서 SqlSessionFactory 필드에 저장
        this.sqlSessionFactory = builder.build(is);
        log.info("\t sqlSessionFactory: {}", sqlSessionFactory);
		
	} // beforeEach

 

 

2. OCI(DB) 연결

SqlSessionFactory를 활용하여 OCI와의 연결(Session)을 획득합니다.

    @Test
    @Tag("fast")
    @Order(1)
    @DisplayName("testSqlSessionFactory")
    @Timeout(3L)
    void testSqlSessionFactory() throws IOException {
        log.trace("testSqlSessionFactory() invoked.");
    
        // 1. 필드에 저장된 SqlSessionFatory에서 하나의 SqlSession 객체 획득
        @Cleanup SqlSession sqlSession = this.sqlSessionFactory.openSession();
    
        Assertions.assertThat(sqlSession).isNotNull(sqlSession);
        log.info("\t SqlSession: {}", SqlSession);
    
    } // testSqlSessionFactory
    
} // end class

검증 라이브러리는 assertj-core를 사용하였습니다.

 

SqlSession은 자원객체이므로 @Cleanup 어노테이션으로 누수를 방지합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Database > MyBatis' 카테고리의 다른 글

MyBatis 시작하기  (0) 2023.09.20

+ Recent posts