[ 최종 수정일 : 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

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

 

 

 

MyBatis(SQL Mapper Framework)는 자바 객체를 SQL 문장으로 자동 매핑(사상)해주는 프레임워크입니다.

Apache MyBatis의 Document는 한국어를 지원하므로 참조하시면 좋을 것 같습니다.

https://mybatis.org/mybatis-3/ko/index.html

 

 

 


 

 

 

pom.xml 설정하기

[아파치 메이븐/의존성] - 라이브러리

[아파치 메이븐] - 메이븐 설정 파일

위 글을 참조합니다.

 

 

 

 

mybatis-config.xml 설정하기

기본적인 Syntax를 참조하여 자신의 개발 환경에 맞게 작성합니다.
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
  
<configuration>

  <environments default="development">
  
	<!-- 개발환경은 Driver SPY 적용 -->  
    <environment id="development">
      <transactionManager type="JDBC"/>
      
      <dataSource type="UNPOOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
    
    <!-- 실제 서비스 환경은 Driver SPY 해제 -->
    <environment id="production">
      <transactionManager type="JDBC"/>
      
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
    
  </environments>
  
</configuration>

 

개발 환경에 따라 dataSource의 타입을 설정합니다.

활성화 : POOLED

비활성화 : UNPOOLED

 

 

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

MyBatis  (0) 2023.09.21

+ Recent posts