본문 바로가기

TIL/MyBatis

[MyBatis] xml사용하지 않고 SqlSessionFactory빌드, xml 사용하기

UTF-8 인코딩설정 완료..(생략)

 

Perspective에서 Java로 변경

 

mybatic-3.5.6.jar파일, ojdbc8.jar파일 lib폴더 생성해서 넣어줌

프로젝트 Properties - Java BuildPath - Libraries - Classpath에 위에 위의 파일들 AddJARs 적용

이전 jdbc에서 사용했던 오라클 계정을 연결시켜준다.

 

DB접속에 관한 환경 설정

- JdbcTransactionFactory : 수동 커밋

- ManagedTransactionFactory : 자동 커밋

- PooledDataSource : ConnectionPool 사용

- UnPooledDataSource : ConnectionPool 미사용

 

 

생성한 환경 설정 정보를 가지고 마이바티스 설정 객체 생성

 

설정 객체에 매퍼 등록

 

- SqlSessionFactory : SqlSession 객체를 생성하기 위한 팩토리 역할을 수행하는 인터페이스

- SqlSessionFactoryBuilder : SqlSessionFactory 인터페이스 타입의 하위 구현 객체를 생성하기 위한 빌드 역할 수행

- build() : 설정에 대한 정보를 담고 있는 Configuration 타입의 객체 혹은 외부 설정 파일과 연결된 스트림을 매개변수로 전달하면 SqlSessionFactory 인터페이스 타입의 객체를 반환하는 메소드

 

- openSession() : SqlSession 인터페이스 타입의 객체를 반환하는 메소드, boolean 타입을 인자로 전달 
- false : Connection 인터페이스 타입 객체로 DML 수행 후 auto commit에 대한 옵션을 false로 지정(권장) 
- true : Connection 인터페이스 타입 객체로 DML 수행 후 auto commit에 대한 옵션을 true로 지정

 

Mapper인터페이스 생성

 

- getMapper() : Configuration에 등록된 매퍼를 동일 타입에 대해 반환하는 메소드

 

- Mapper 인터페이스에 작성된 메소드를 호출하여 쿼리 실행

 

- close() : SqlSession 객체 반납

 

전체코드

package com.greedy.section01.javaconfig;

import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;

public class Application {
	
	private static String DRIVER = "oracle.jdbc.driver.OracleDriver";
	private static String URL = "jdbc:oracle:thin:@localhost:1521:xe";
	private static String USER = "C##REVIEW";
	private static String PASSWORD = "REVIEW";
	
	public static void main(String[] args) {
		
		Environment environment = 
				new Environment("dev"													//환경 정보 이용
						, new JdbcTransactionFactory()							//트랜잭선 매니저 종류 결정
						, new PooledDataSource(DRIVER, URL, USER, PASSWORD));	//Connection pool 사용 유무
		
		Configuration configuration = new Configuration(environment);
		
		configuration.addMapper(Mapper.class);
		
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
		
		SqlSession sqlSession = sqlSessionFactory.openSession(false);
		
		Mapper mapper = sqlSession.getMapper(Mapper.class);
		
		java.util.Date date = mapper.selectSysdate();
		
		System.out.println(date);
		
		sqlSession.close();
	}
}

 

https://mybatis.org/mybatis-3/ko/getting-started.html

 

MyBatis – 마이바티스 3 | 시작하기

Copyright © 2009–2021MyBatis.org. .

mybatis.org

 

마이바티스 사이트에 들어가서 확인해보면 XML을 사용하지 않고 SqlSessionFactory 빌드하는 법이 나온다.

위에서 써온 코드와 비슷한 것을 확인할 수 있다.


마이바티스 사이트에서 xml에서 빌드하는 코드가 나와있다.

<!DOCTYPE 부터 복사해서 xml파일을 만들어주자.

 

mapper.xml 파일도 만들어주자

 

Application

package com.greedy.section02.xmlconfig;

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 Application {

	public static void main(String[] args) {
		
		String resource = "com/greedy/section02/xmlconfig/mybatis-config.xml";
		
		try {
			InputStream inputStream = Resources.getResourceAsStream(resource);
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			
			SqlSession session = sqlSessionFactory.openSession(false);
			
			java.util.Date date = session.selectOne("mapper.selectSysdate");
			System.out.println(date);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 

 

'TIL > MyBatis' 카테고리의 다른 글

[MyBatis] Dynamic Sql  (0) 2022.03.16
[MyBatis] crud-javaconfig  (0) 2022.03.15
[MyBatis] crud-xmlconfig  (0) 2022.03.14