티스토리 뷰

[01] MyBatis

아파치(Apache) 소프트웨어 재단의 IBatis 개발자팀이 구글 코드로 이전하기로 결정하고,
구글 코드에서 새로이 만들어지는 이름이 MyBatis로 변경되었습니다.
 
iBatis 라이브러리는 다운로드가 안됩니다.
 



(01) MyBatis Component Flow
 
MyBatis Framework가 Business Layer와 DB Layer사이 가운데서 양쪽을 연결하고 있으며,
하단의 mapper.xml 파일을 이용하여 쿼리문을 별도로 작성합니다.
 

impl : 구현클래스

 


(02) MyBatis 특성
 
 1) 성능: 구조적 강점-데이터 접근 속도를 높여주는 Join 매핑
    여러가지 방식의 데이터를 가져오기 전략(가져오기 미루기, SQL 줄이기 기법)
 
 2) 관심사의 분리:설계를 향상(유지 보수성 좋음) ->sql에 xml에 넣어놓았다는 뜻..
    리소스를 관리하여 계층화를 지원(Connection, PreparedStatement,ResultSet)
 
 3) SQL문이 애플리케이션 소스 코드로부터 완전 분리
 
 4) 이식성: 어떤 프로그래밍 언어로도 구현 가능
 
 5) 오픈소스이며 무료임
 

 
 (03) MyBatis의 구성요소
 
 1) Configuration 파일(SqlMapConfig.xml)
  - DB 설정과 트랜잭션등 MyBatis가 동작하는 규칙을 정의
  - DB 설정 : 별도의 properties 파일로 분리할 수 있다.
  - mapper 설정: SQL query를 xml문서로 분리
  
 
 2) 매퍼(Mapper)
  - 두가지 종류의 매퍼를 정의 할 수 있다.
    첫째는 SQL을 XML에 정의된 XML파일로 만들수 있다.
    두번째는 SQL을 메소드에 어노테이션으로
 정의한 인터페이스로 만들 수 있다.

 
 3) 매핑구문(Mapped Statements)
  - SQL을 DB에 실행할 구문을 위미한다.
    매핑 구문은 어노테이션 정의 방법과 XML정의 방식 두가지가 있다. 나는 후자를 쓸거임

 






(01) MyBatis 

- MyBatis는 SQL, 저장프로시저 등 매핑을 지원하는 퍼시스턴스 프레임워크이다. 
- MyBatis는 JDBC코드와 파라미터 설정및 결과 매핑을 대신한다.
 (MemoDAO, BbsDAO, ...DAO)
- MyBatis는 데이터베이스 레코드에 원시타입과 Map인터페이스 그리고 자바 POJO를     설정하고 매핑하기 위해 XML과 애노테이션을 사용할 수 있다.
 
(02) MyBatis 시작하기
- 모든 MyBatis 애플리케이션은 SqlSessionFactory 인스턴스를 사용한다.
- SqlSessionFactory 인스턴스는 SqlSessionFactoryBuilder클래스로 만들수 있다. 
- SqlSessionFactoryBuilder는 XML설정파일로 SqlSessionFactory객체를 생성한다.
 
(03) XML에서 SqlSessionFactory 빌드하기
- 설정을 위해 클래스패스 자원을 사용하거나  file:// URL로부터 만들어진 Reader 인스턴스를 사용할 수도 있다. 
 
public class MyAppSqlConfig {
private static final SqlSessionFactory sqlMapper;
static {
        try {
              String resource = "org/mybatis/example/Configuration.xml";
              Reader reader = Resources.getResourceAsReader(resource);
              sqlMapper = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
           throw new RuntimeException (“Error initializing MyAppSqlConfig class. Cause: ” + e);
       }
}
public static SqlSessionFactory getSqlMapInstance () {
     return sqlMapper;
 }
}
 
-----------------------------------------------------------------------------------------------
(04) SqlSessionFactory 에서 SqlSession 만들기
 
- SqlSessionFactory 이름에서 보듯이, SqlSession 인스턴스를 만들수 있다. 
- SqlSession 인스턴스를 이용하여 SQL구문 실행할 수 있다. (예1,예2)
 
방식 1)
- SqlSession 은 데이터베이스에 대해 SQL 명령어를 실행하기 위해 필요한 모든
  메서드를 가지고 있다. 
그래서 SqlSession 인스턴스를 통해 직접 SQL구문을
 실행할 수 있다. 
 
SqlSession session = sqlMapper.openSession();
try {
        Blog blog = (Blog) session.selectOne("example.selectBlog", 101);    
//selectOne이 iBatis sqlMapClient의 queryForObject와 같음
} finally {
        session.close();
}
---------------------------------------------------------------------------------------
- SqlSession 을 호출하는 XML기반의 매핑 구문이다.
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" parameterType="int" resultType="Blog">
select * from Blog where id = #{id}                //    #id#에서 개선된 것
</select>
</mapper>





방식 2)


- 주어진 SQL구문의 파라미터와 리턴값을 설명하는 인터페이스
 (예를 들면, BlogMapper.class )를 사용하여, 
문자열 처리 오류나 타입 캐스팅 오류없이 좀더 타입에 안전하고 깔끔하게 실행할 수 있다.
 
SqlSession session = sqlMapper.openSession();
try {
        BlogMapper mapper = session.getMapper(BlogMapper.class);
        Blog blog = mapper.selectBlog(101);
} finally {
        session.close();
}
 
 
매핑된 구문은 XML에 매핑될 필요가 없다. 
- 대신 자바 어노테이션을 사용할 수 있다. 
- 위 XML예제는 다음과 같은 형태로 대체될 수 있다.
 
package org.mybatis.example;
public interface BlogMapper {
   @Select("SELECT * FROM blog WHERE id = #{id}")
   Blog selectBlog(int id);
}

좀더 간단)

'IBATIS MYBATIS' 카테고리의 다른 글

[iBATIS] iBATIS 개론, SQL Map XML 파일 , iterate 예제  (0) 2018.04.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함