개발 무지렁이

[JDBC] MyBatis 환경설정 및 주요 컴포넌트(Component) 본문

Backend/JDBC

[JDBC] MyBatis 환경설정 및 주요 컴포넌트(Component)

Gaejirang-e 2023. 5. 6. 19:18

𐂂 ORM (Object Relation Mapping) framework, MyBatis
DAO -(위임)-> Mybatis -(조작)-> JDBC API
(org.apache.ibatis 패키지에서 MyBatis framework 라이브러리 제공)

⚠️ 위임할 때 parameterresult만 결정해주면 알아서 조작해준다.
⚠️ 내부구조가 PreparedStatement로 동작

🎯 목적:
- JDBC 코드 및 매개변수의 중복작업을 제거
- 자바 코드SQL 쿼리분리로 간결화
- 복잡한 쿼리 작성 가능
- join 결과에 대한 쉬운 객체 바인딩

📜 mybatis.xml
MyBatis 환경설정 문서

  <configuration>
    <!-- DB정보를 담고있는 외부 properties파일 위치 지정 -->
    <properties resource="dbInfo.properties" />

    <!-- 값이 전달되지 않으면 NULL로 들어갈 수 있도록 설정 -->
    <settings>
      <setting name="jdbcTypeForNull" value = "NULL" />
    </settings>

    <!-- 객체에 별칭만들기 -->
    <typeAliases>
      <typeAlias type="app.dto.Cust" alias="cust" /><!-- 클래스 경로를 cust로 간단하게 사용 -->
    </typeAliases>

    <!-- DBCP -->
    <environments default="development">
      <environment id="development">
        <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>

    <!-- 쿼리 작성 문서(mapper문서) 위치 지정(등록) -->
    <mappers>
      <mapper resource="custmapper.xml"/>
    </mappers>
  </configuration>

📜 dbInfo.properties

  url=jdbc:mysql://localhost:3306/shopdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Seoul
  user=woo
  password=123456
𖠃 MyBatis 주요 컴포넌트
⚒️ SqlSessionFactoryBuilder
(scope: method variable)
: SqlSessionFactory를 세우는 역할

🏭 SqlSessionFactory
(scope: Application)
: 필요할 때마다 SqlSession을 생성해주는 역할, static singleton pattern

☄️ SqlSession
(scope: method variable)
: JDBCconnection과 동일, Not to be shared, closing*

⚠️ MyBatisauto commit*이 아니다.
Comments