Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[JDBC] MyBatis 환경설정 및 주요 컴포넌트(Component) 본문

𐂂 ORM (Object Relation Mapping) framework, MyBatis
DAO -(위임)-> Mybatis -(조작)-> JDBC API
(org.apache.ibatis 패키지에서 MyBatis framework 라이브러리 제공)
⚠️ 위임할 때 parameter와 result만 결정해주면 알아서 조작해준다.
⚠️ 내부구조가 PreparedStatement로 동작
🎯 목적:
- JDBC 코드 및 매개변수의 중복작업을 제거
- 자바 코드와 SQL 쿼리의 분리로 간결화
- 복잡한 쿼리 작성 가능
- join 결과에 대한 쉬운 객체 바인딩
(org.apache.ibatis 패키지에서 MyBatis framework 라이브러리 제공)
⚠️ 위임할 때 parameter와 result만 결정해주면 알아서 조작해준다.
⚠️ 내부구조가 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)
: JDBC의 connection과 동일, Not to be shared, closing*
⚠️ MyBatis는 auto commit*이 아니다.
(scope: method variable)
: SqlSessionFactory를 세우는 역할
🏭 SqlSessionFactory
(scope: Application)
: 필요할 때마다 SqlSession을 생성해주는 역할, static singleton pattern
☄️ SqlSession
(scope: method variable)
: JDBC의 connection과 동일, Not to be shared, closing*
⚠️ MyBatis는 auto commit*이 아니다.
'Backend > JDBC' 카테고리의 다른 글
[JDBC] Mapper문서와 SqlSessionFactory 빌드 및 SqlSession의 내장 메서드 (0) | 2023.05.07 |
---|---|
[JDBC] DBCP(DataBase Connection Pool)과 WAS (0) | 2023.04.23 |
[JDBC] DBManager, DBProperties (0) | 2023.04.19 |
[JDBC] JDBC 로드, 연결, 실행, 닫기 (1) | 2023.04.18 |