목표 : 스프링 프레임워크와 MyBatis를 연동해서 빠르게 SQL을 처리할 수있는 구조 만들기
Mybatis
-SQL매핑 프레임워크로 분류, JDBC코드의 복작하고 지루한 작업을 피하는용도
전통적인 JDB프로그램은
-직접Connection 을 맺고 마지막에 close()처리해주고
PreparedStatement 직접생성 및 처리 등등...과 같이 매우 귀찮았다
MyBatis
- 자동으로 Connectino close()가능
- 내부적으로 PreparedStatement처리
등등.. 간편하다
MyBatis의 장점 으로는
- 기존의 SQL을 그대로 활용 할수 있음
- 진입장벽이 낮아 JDBC의 대안으로 많이 사용
- 다른 프레임워크들과의 연동이 쉽다(라이브러리)- mybatis-spring
예제의 구조는 아래와 같다.
Mybatis 관련 라이브러리 추가
pom.xml 라이브러리 추가해줘야한다.
[ex00] , [jex00]
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
-spring-jdbc/spring-tx : 스프링에서 데이터베이스 처리와 트랜젝션 처리-mybatis/mybatis-spring : MyBatis와 스프링 연동용 라이브러리
SQLSessionFactory
- MyBatis에서 가장 핵심적 객체는 SQLSession 과 SQLSessionFactory
- SQLSessionFactory 는 내부적으로 SQLSession을 만들어냄
- 개발에서는 SQLSession을 통해 Connection을 생성하거나 원하는 SQL을 전달 , 결과를 리턴받는 구조로 작성
root-context.xml 작성
(root-context.xml은 bean 설정 파일)
아래코드를 추가해준다.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
SqlSessionFactory를 등록하는 작업은 SqlSessionFactoryBean을 이용한다.
Java설정을 이용하는 경우[jex00]
아래 코드를 RootConfig.java에 추가해 준다.
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception{
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource());
return (SqlSessionFactory) sqlSessionFactory.getObject();
DataSourceTests 에 아래의 코드를 추가해 준다.
@Setter(onMethod_ = {@Autowired} )
private SqlSessionFactory sqlSessionFactory;
@Test
public void testMyBatis() {
try (SqlSession session = sqlSessionFactory.openSession();
Connection con = session.getConnection();
){
log.info(session);
log.info(con);
} catch (Exception e) {
fail(e.getMessage());
}
}
junit test를 돌리면 위와같이 확인할 수있다.
'web' 카테고리의 다른 글
코드로 배우는 스프링 웹프로젝트 - log4jdbc-log4j2 설정 (0) | 2020.10.01 |
---|---|
코드로 배우는 스프링 웹프로젝트 - 스프링과의 연동처리 (0) | 2020.09.30 |
코드로 배우는 스프링웹프로젝트 -JDBC테스트코드 (0) | 2020.09.29 |
코드로 배우는 스프링웹프로젝트 - 스프링과 Oracle Database연동 (0) | 2020.09.29 |
코드로 배우는 스프링웹 프로젝트 03 (0) | 2020.09.29 |