728x90
반응형

Mybatis SqlSessionFactory 생성

Mybatis-config.xml, mapper.xml 파일 생성을 완료했다면, DAO에서 세션 생성을 위한 getSqlSessionFactory() 메소드를 작성

private SqlSessionFactory getSqlSessionFactory() {
  String resource = "mybatis/mybatis-config.xml";
  SqlSessionFactory factory = null;
  try {
    InputStream inputStream =
    Resources.getResourceAsStream(resource);
    SqlSessionFactoryBuilder builder =
    new SqlSessionFactoryBuilder();
    factory = builder.build(inputStream);
  } catch (IOException e) {
  }
  return factory;
}

 

 

SqlSessionFactoryBuilder 메소드

메소드 구분  설명
build(InputStream) config.xml파일만 불러옴
build(InputStream, String) config.xml파일과 지정한 DB를 불러옴
build(InputStream, Properties) config.xml파일과 프로퍼티로 설정한 내용 으로 불러옴(“${key명}”)
build(InputStream, String, Properties) config.xml파일과 지정한 DB, properties파 일 불러옴
build(configuration) configurateion객체에 설정한 내용을 불러옴

 

 

Mybatis SqlSession 생성

DAO 메소드는 SqlSqssionFactory를 사용하여 SqlSession 객체를 생성

public Member selectMember(Member m) {
  Member member = null;
  SqlSession session = null;
  try {
    session = getSqlSessionFactory().openSession(false);
    // 매퍼 파일 안에 작성된 쿼리문 실행시키고 결과를 받는다.
    member = session.selectOne("Member.loginCheck", m);
    System.out.println(session);
  } catch (Exception e) {
 	e.printStackTrace();
  } finally{
  	session.close();
  }
  return member;
}

 

 

Mybatis SqlSession

Mybatis SqlSessionFactory를 통해 세션을 생성하는 openSession() 메소드는 여러가지 형식으로 오버로딩 되어 있는데, 그 중 대표적인 것은 다음과 같음

메소드 구분 설명
openSession() 기본값을 통해 SqlSession을 생성
openSession(Boolean) SqlSession 생성 시 AutoCommit 여부를 true / false로 지정할 수 있음 (기본값 true)
openSession(Connection) 직접 생성한 Connection 객체를 이용해 SqlSession을 생성 (기본값 X)
openSession(ExecutorType) 쿼리를 실행할 때 PreparedStatement의 재사용 여부를 설정 (기본값 ExecutorType.SIMPLE)

 

 

SqlSession을 통한 쿼리 실행 예시

생성한 SqlSession 객체의 메소드를 통해 정의한 쿼리에 접근

public Member selectMember(Member m) {
  Member member = null;
  SqlSession session = null;
  try {
    session = getSqlSessionFactory().openSession(false);
    // 매퍼 파일 안에 작성된 쿼리문 실행시키고 결과를 받는다.
    member = session.selectOne("Member.loginCheck", m);
    System.out.println(session);
  } catch (Exception e) {
  	e.printStackTrace();
  } finally{
  	session.close();
  }
  return member;
}

 

 

SqlSession을 통한 mapper 쿼리 실행

mapper.xml에서 선언한 쿼리구문을 SqlSession에서 실행하는 메소드는 총 6가지가 있음

메소드 명 설명
Object selectOne (String mapper, Object param) 하나의 객체만을 받고자 할 때 사용
List selectList (String mapper, Object param) 결과에 대한 값을 List로 받고자 할 때 사용
Map selectMap (String mapper, Object param, String mapKey) 결과에 대한 값을 Map으로 받고자 할 때 사용 (마지막 인자로 키로 사용될 컬럼을 명시)
int insert (String mapper, Object param) Database에 데이터를 입력하고자 할 때 사용
int update (String mapper, Object param) Database의 데이터를 수정하고자 할 때 사용
int delete (String mapper, Object param) Database의 데이터를 삭제하고자 할 때 사용

 

반응형
복사했습니다!