[ 최종 수정일 : 2023년 09월 20일 ]
SqlSessionFactory는 사용자가 정의한 설정파일(mybatis-config.xml)을 바탕으로 SqlSession 객체를 생성합니다.
먼저 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 |
---|