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
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일 1코딩][Web-Java] Filter 클래스 & 사용자정의 Exception 클래스 (0) | 2022.06.05 |
---|---|
[1일 1코딩][MyBatis] 회원조회, 가입 Service (0) | 2022.06.04 |
[1일 1코딩][MyBatis] Member-mapper.xml (0) | 2022.06.02 |
[1일 1코딩] (0) | 2022.06.01 |
[1일 1코딩] (0) | 2022.05.31 |