MyBatis Template

2022. 1. 5. 20:34Framework

반응형

마이바티스는 자바 퍼시스턴스 프레임워크의 하나로

XML 서술자나 애너테이션을 사용하여

저장 프로시저나 SQL 문으로 객체들을 연결

 

 

DB와 접속되는 객체가 connection객체가 아닌 SqlSession세션

객체DB와 접속하는 connection객체는 service단에서 생성

seqlSession도 마찬가지로 service단에서 생성

 

package com.gy.mybatis.common.template;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Template {
	
	/*
	 * 기존 JDBC
	 * public static Connection getConnection() {
	 * 		// driver.properties 파일 읽어들여서
	 * 		// 해당 DB와 접속된 Connection객체 생성해서 반환
	 * }
	 * 
	 * public static void close(JDBC용 객체) {
	 * 		// 전달받은 JDBC용 객체를 반납시키는 구문
	 * }
	 * 
	 * public static void commit|rollback(conn) {
	 * 		// 트랜잭션 처리
	 * }
	 */
	
	// 마이바티스
	public static SqlSession getSqlSession() {
		
		// mybatis-config.xml 파일 읽어들여서
		// 해당 DB와 접속된 SqlSession 객체 생성해서 반환
		SqlSession sqlSession = null;
		
		// SqlSession 생성하기 위해 SqlSessionFactory 필요
		// SqlSessionFactory 생성하기 위해 SqlSessionBuilder 필요
		
		String resources = "/mybatis-config.xml";
		// '/' 모든 소스폴더 최상위
		try {
			// resources 읽어들이는 통로 생성
			InputStream stream = Resources.getResourceAsStream(resources);
			// sqlSession객체를 생성
			sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession(false);
							// openSession(): 호출만 한 경우. 오토커밋 기본값 false
							// openSession(boolean flag): 오토커밋 여부(true/false)
		} catch (IOException e) {
			e.printStackTrace();
		}
		return sqlSession;
	}
	
}
반응형