마이바티스를 사용하여 db에 접속된 세션을 얻기 위해서는
SqlSessionFactory 가 필요하다
이거를 만드는 방법은 여러방식이 있는데
SqlSessionFactoryBuilder를 이용해서 mybatis-config.xml을 가져와서 만드는 방법도 있지만
XML 을 배척하는 JavaConfig를 선호함으로 다른 방식을 사용하겠다.
Mybatis-Spring 라이브러리를 사용하면
SqlSessionFactoryBean 이 있는데
이 객체를 사용하면 mybatis-config.xml 파일 없이도
클린한 JavaConfig 를 구성할수있다.
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.BooleanTypeHandler;
import org.apache.ibatis.type.DateTypeHandler;
import org.apache.ibatis.type.TypeHandler;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@Configuration
@MapperScan(value="org.prj.arachne.infrastructure.mapper")
public class MybatisConfiguration {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource)throws Exception{
SqlSessionFactoryBean sessionFactory=new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
Resource[] res=new PathMatchingResourcePatternResolver()
.getResources("classpath:/mappers/*_mapper.xml");
//sessionFactory.setEnvironment("dev");
sessionFactory.setMapperLocations(res);
sessionFactory.setTypeAliasesPackage("org.prj.arachne.domain");
sessionFactory.setTypeHandlers(new TypeHandler[] {
new DateTypeHandler(),
new BooleanTypeHandler()
});
return sessionFactory.getObject();
}
/**
* 마이바티스 {@link org.apache.ibatis.session.SqlSession} 빈을 등록한다.
*
* SqlSessionTemplate은 SqlSession을 구현하고 코드에서 SqlSession를 대체하는 역할을 한다.
* 쓰레드에 안전하게 작성되었기 때문에 여러 DAO나 매퍼에서 공유 할 수 있다.
*/
@Bean
public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
@MapperScan : @Mapper 인터페이스들의 패키지 위치를 선언하는 설정이다.
sqlSessionFactoryBean 에서
Datasource : 데이터베이스 접속을위한 계정, db드라이버, 비번 과 같은 정보들
MapperLocation : sql 들이 들어있는 xml 파일들의 위치를 지정한다
위 설정을 가지고
userMapper.java(인터페이스) 와 user_mapper.xml 이렇게가 한쌍이되어서
mybatis가 구현체를 알아서 생성해준다.
TypeAliasesPackage : 디비에서 가져온 데이터들을 담을 자바 빈들이 모여있는 패키지 등록 쉽게말하면 MVC 패턴에서 Model에 해당하는 패키지를 등록하는 것이다.
추가 옵션 설정은 이렇게 해주면된다
다양한 옵션들은 mybatis공식 사이트 들어가서 확인해보시기를
Properties properties = new Properties();
properties.setProperty("mapUnderscoreToCamelCase", "true");
sessionFactory.setConfigurationProperties(properties);
'Programming > Mybatis' 카테고리의 다른 글
Mybatis Springboot TypeHandler 배포 에러 (0) | 2018.06.27 |
---|---|
SqlSessionFactory 와 Builder의 구분 (0) | 2018.06.12 |
mybatis 핵심 기능 mapper.xml 부분 (0) | 2017.03.13 |
Mybatis 에 대한 정리 (0) | 2017.01.21 |