[SPRING]MyBatis
카테고리: SPRING
[21] MyBatisPermalink
21.1. MyBatis 개요Permalink
- 자바코드 안의 SQL구문을 별도의 xml로 분리하는 역할을 한다.
- config.xml / Mapper.xml로 분리하고 구분한다.
- 자바 코드로부터 SQL문을 분리해서 관리한다.
- 매개변수 설정과 쿼리 결과를 읽어오는 코드를 제거
- 작성할 코드가 줄어들어서 생산성 향상, 유지보수 편리
- SQL을 별도의 파일로 분리해서 관리
- 객체-SQL 사이의 파라미터들을 Mapping 작업을 자동으로 해준다.
- JPA(Java Persistence Api)나 Hibernate 등 DB 프로그래밍과 병행된 개발 기술이다.
- 퍼시스턴스 프레임워크
- JDBC의 모든 기능을 MyBatis가 대부분 제공한다.
- 복잡한 JDBC 코드를 걷어내며 슬림한 소스코드 유지 가능하다.
- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 된다.
21.2. SqlSessionFactoryBean과 SqlSessionTemplatePermalink
- SqlSessionFactory
- SqlSession을 생성해서 제공하는 역할을 한다.
- SqlSession
- SQL 명령을 수행하는데 필요한 메서드를 제공하는 역할을 한다.
- SqlSessionFactoryBean
- SqlSessionFactory를 spring에서 사용하기 위한 빈(Bean)이다.
- SqlSessionTemplate
- SQL 명령을 수행하는데 필요한 메서드를 제공한다.
- thread-safe (멀티스레드에 안전)
21.3. MyBatis 주요 컴포넌트Permalink
- MyBatis 설정파일 (Config.xml)
- 데이터베이스의 접속 주소 정보, Mapper 파일의 경로 등 고정된 환경정보 설정.
<typeAliases>
<typeAlias alias="BoardDto" type="kr.co.heart.domain.BoardDto" />
</typeAliases>
=> DAO에서 SQL문으로 값을 전달 할 때 또는 SQL문을 실행한 후 가져온 값을 DAO로 전달할 때 사용할 빈을 생성함.
- mapping 파일 (Mapper.xml)
- SQL문과 OR Mapping을 설정
- SqlSessionFactory
- SqlSession을 생성해서 제공
- SqlSession
- SQL 명령을 수행하는데 필요한 메서드를 제공하는 역할을 한다.
- 핵심적인 역할을 하는 클래스
- SqlSessionFactoryBean
- SqlSessionFactory를 spring에서 사용하기 위한 빈(Bean)이다.
- MyBatis 설정파일을 바탕으로 SqlSessionFactory를 생성한다.
- SqlSessionTemplate
- SQL 명령을 수행하는데 필요한 메서드를 제공한다.
- thread-safe (멀티스레드에 안전)
- 핵심적인 역할을 하는 클래스
- SqlSession 인터페이스를 구현
- Spring Bean으로 등록해야 한다.
21.4. SqlSession의 주요 메서드Permalink
- T selectOne(String statement) 또는 T selectOne(String statement, Object parameter)
- 하나의 행을 반환하는 select에 사용한다.
-
parameter로 sql에 binding될 값을 제공
- List
selectList(String statement) 또는 List selectList(String statement, Object parameter) - 여러 행을 반환하는 select에 사용한다.
- parameter로 sql에 binding될 값을 제공
- Map<K,V> selectMap(String statement, String KeyColumn) 또는 Map<K,V> selectMap(String statement, String KeyColumn, Object parameter)
- 여러 행을 반환하는 select에 사용한다.
- KeyColumn에 Map의 Key로 사용할 컬람을 지정
- int insert(String statement) 또는 int insert(String statement, Object parameter)
- insert문을 실행하고 insert된 행의 갯수를 반환한다.
- int delete(String statement) 또는 int delete(String statement, Object parameter)
- delete문을 실행하고 delete된 행의 갯수를 반환한다.
- int update(String statement) 또는 int update(String statement, Object parameter)
- update문을 실행하고 update된 행의 갯수를 반환한다.
21.5. 구현 순서Permalink
- 테이블 생성
- Mapper XML & DTO 작성
- DAO 인터페이스 구현
- Service 인터페이스 구현
- Controller 인터페이스 구현
- JSP 구현
댓글 남기기