프레임워크 강의 - 6 (Mybatis)

robin Han·2023년 4월 17일
0

Spring

목록 보기
7/13

Mybatis

  • SQL 과 자바 객체를 매핑하여 데이터베이스 접근용 프레임워크
  • Mybatis 자체 라이브러리와 Spring을 연동하기위한 Mybatis-Spring 라이브러리 필요
    장점:
    - SQL의 체계적인 관리(설정 파일, 애노테이션)
    비즈니스 로직에서 Mapper 인터페이스를 통해 SQL문 실행
    동적 SQL 조합
    • 자바객체와 SQL입출력갑의 바인딩

Mybatis 주요 컴포넌트

  • Mybatis 설정 파일
  • SqlSessionFactoryBuilder : Mybatis 설정 파일을 바탕으로 SQLSessionFactory 생성
  • SqlSessionFactory : sqlSwssion 생성을 위한 컴포넌트
  • SqlSession : SQL 발행과 트랜잭션 관리
  • Mapper 인터페이스 : 매핑 파일과 SQL에 대응하는 자바 인터페이스
  • Mapping file: SQL 과 OR 매핑 XML에 기술

Mybatis-sping 컴포넌트

  • org.mybatis.spring.SqlSessionTemplate :sqlsession 구현

Mybatis의 핵심 API

  • sqlSession 인터페이스
  • sqlSession 객체를 DAO 객체에 의존관계 주입으로 사용
  • XML Mapper에 등록된 SQL을 실행하기 위한 다양하 API 제공
studentMapper.xml
private static final Stinrg namespcae = "org.tukorea.web.mapper.StudentMapper";
StudentVO vo = sqlSession.selectOne(namespace+".selectByid",id);

Mybatis 연동의 필요한 라이브러리

  • spring-jdbc: JDBC 래핑 모듈
  • Mybatis-Spring : 연동 라이브러리
  • Mybatis: 마이바티스 프레임워크 모듈
  • Commons-dbcp : 커넥션풀 지원 라이브러리
  • mysql-connector-java: 사용할 데이터베이스 JDBC 라이브러리

Datasource 빈을 제일 처음 만들어서, sqlSessiontFacrtory 에 주입하여 사용
mybatis 에서 sqlsessionfactory 에서 mybatis-spring에 있는 sqlsessiontemplate에 주입
sqlSessiontTemplate 은 sqlSession 객체를 DAO 객체에 의존관계 입

테이블에 관련된 모든 내용을 XML로 관리하고, Mapping 1,2,3 로 관리하여 Configuration 으로 설정
mapping 하나당 XML하나의파일

Transaction Manager DataSource 를 주입받아서 사용.

  • commons.dbcp에 컨넥션 풀을 지원하는 데이터 소스 빈을 등록 databaset 설정하여 Datasource 생성
  • 스프링의 트랜잭션 관리자의 빈을 등록
  • SqlSesstionFactory 빈 등록으로 data source, configloaction, mapper location
  • sqlSession 에 sqlsesstiontemplate 주입
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
   </bean>     
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
 	<property name="mapperLocations" value="classpath:mappers/*Mapper.xml"></property>
   </bean>
    
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
    <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>

0개의 댓글