728x90

 

1) import static common.Template.*;

Template.java에서 만든 db연결 기능을 끌어와 쓸 것

 

2) SqlSession session = getSqlSession()

db 연결

 

3) controller, dao 호출 및 데이터 전송

public class MemberService {
	public Member selectMember(Member m) {
		
		SqlSession session = getSqlSession();
		
		Member member = new MemberDAO().selectMember(session, m);
		
		session.close();
		
		return member;
	}
}


	public void insertMember(Member m) throws MemberException {

		SqlSession session = getSqlSession();
		
		new MemberDAO().insertMember(session, m);
		
		// 인서트가 잘안됬으면 롤백해야함. 롤백은 dao에서 해야함. 제대로 잘안됬으면 익셉션 발생할거고, 서비스에서 나눠봤자 의미x
		session.commit();
		session.close();
		
	}

 

728x90
반응형
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