728x90

 

1)기본 생성자 생성

public Template[] {}

 

2)public static SqlSession getSqlSession() 메소드 생성

 

3) SqlSession session = null;

 

4)MyBatis 설정파일 읽어오기

InputStream으로 마이바티스 환경설정 파일 mybatis-config.xml 로드

InputStream stream = Resources.getResourceAsStream("/mybatis-config.xml");

인풋스트림이 스트림이니 getResource할 때 AsStream으로 읽어와라는 의미

Resources.은 클래스임. 대문자 시작은 클래스.

Resources라는 클래스를 이용해서 resources폴더에 접근할 수 있게 되는 것

 

5) SqlSessionFactoryBuilder 클래스(객체) 생성

 

 

6)SqlSessionFactory 클래스(객체) 생성

5번에서 생성한 SqlSessionFactoryBuilder에 4번에서 로드한 mybatis-config.xml을 .bulid()로 연결

InputStream stream = Resources.getResourceAsStream("/mybatis-config.xml");

SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
SqlSessionFactory ssf = **ssfb.build(stream)**;
session = ssf.openSession(false); // false : 자동 커밋 하지않겠다는 의미 // 이중안전장치로 false 세팅함

 

 

7) SqlSession에 여태 생성하고 받아온 모든 데이터 넣기

SqlSessionFactory에 담아둔 설정파일 데이터와 함께 openSession()을 생성하면서 SqlSession 변수인 session에 넣어준다

InputStream stream = Resources.getResourceAsStream("/mybatis-config.xml");

SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); // 객체생성
SqlSessionFactory ssf = ssfb.build(stream); // 생성한 SqlSessionFactoryBuilder 객체(클래스)와 InputStream으로 읽어온 mybatis-config.xml
**session** = ssf.**openSession**(false);

 

※ close, commit, rollback 메소드는 안써도 MyBatis에서 처리함

 

 

전체코드

package common;

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.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Template {
	
	public Template() {} // 기본 생성자
	
	public static SqlSession getSqlSession() {
		
		
		SqlSession session = null;
		
			try {
				// MyBatis 설정파일 읽어오기
				InputStream stream = Resources.getResourceAsStream("/mybatis-config.xml");
				
				SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); // 객체생성
				SqlSessionFactory ssf = ssfb.build(stream); // 생성한 SqlSessionFactoryBuilder 객체(클래스)와 InputStream으로 읽어온 mybatis-config.xml
				session = ssf.openSession(false); // false : 자동 커밋 하지않겠다는 의미 // 이중안전장치로 false 세팅함
				// * 위의 세줄 한줄로 단축 가능

				// close, commit, rollback 메소드는 안써도 마이바티스에서 처리해줌
				
			} catch (IOException e) {
				e.printStackTrace();
			}
			return session;
	}

	
}

 

728x90
반응형

+ Recent posts