본문 바로가기

Programming Language/Java

[Java] MyBatis 개요 및 설정 방법

728x90

MyBatis란?

Java Persistence framework의 SQL Mapper 방식 중 하나로, XML 서술자나 annotation을 사용해 저장 프로시저나 SQL문으로 객체들을 연결시킴

객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거

 

MyBatis의 장점

손쉽게 자바 코드와 SQL 문을 분리해줄 수 있을뿐만 아니라 MyBatis 에서 제공하는 여러가지 추가적인 기능을 이용해 데이터베이스를 좀 더 유연하게 사용할 수 있다.

MyBatis를 사용하면 JDBC 프로그래밍 없이 DB와 연동할 수 있다. 개발자가 JDBC API를 직접 호출하지 않고 MyBatis가 대신 호출하는 방식이다.

MyBatis의 핵심은 개발과 유지보수가 쉽도록 소스 코드에 내장돼있는 SQL을 별도의 파일로 분리하는 것이다.

또한 단순하고 반복적인 JDBC 코드를 캡슐화하여 데이터베이스 프로그래밍을 간결하게 만든다.

 

 

MyBatis Mapper 파일의 namespace엔 Mapper 인터페이스의 경로를 적어주며 id 가 Mapper 인터페이스의 메소드 이름과 매핑된다.

 

MyBatis 설정

@Configuration :이 자바 클래스가 설정관련 파일이라고 설정 
@MapperScan : mapper.xml 파일들이 바라볼 기본 패키지 위치를 지정
모든 MyBatis 애플리케이션은 SqlSessionFactory 인스턴스를 사용합니다. 이후 빈을 생성하여 sessionFactory에 Mapper의 위치를 지정해 줍니다.

MyBatis 를 이용할 때 SQL 문을 사용하는 방식

1. XML만을 이용해서 SQL 문을 설정, DAO 에서는 XML 을 찾아서 실행하는 코드를 작성하는 방식

      장점 : SQL 문은 별도의 XML 로 작성되기 때문에 SQL 문의 수정이나 유지보수에 적합

      단점 : 개발 시 코드의 양이 많아지고, 복잡성이 증가

 

 2. annotation과 interface만을 이용해서 SQL 문을 설정

      장점 : 별도의 DAO 없이도 개발이 가능하기 때문에 생산성이 크게 증가

      단점 : SQL 문을 애노테이션으로 작성하므로, 매번 수정이 일어나는 경우 다시 컴파일

 

  3. interface와 XML 로 작성된 SQL 문의 활용

      장점 : 간단한 SQL 문은 annotation으로, 복잡한 SQL 문은 XML 로 처리하므로, 상황에 따라서 유연하게 처리

      단점 : 개발자에 따라 개발 방식의 차이가 있을 수 있기 때문에, 유지보수가 중요한 프로젝트의 경우 부적합

 

* 국내의 대부분 프로젝트는 XML 만을 이용해서 SQL 문을 작성하고, 별도의 DAO 를 만드는 방식을 선호한다고 함.

  최대장점은 SQL 문을 온전히 분리해서 처리하기 때문에, 향후 SQL 문의 변경이 일어날 때, 대처가 수월하다는 점

 

MyBatis를 XML을 사용하여 작성하는 경우의 코딩순서

   1. 테이블 생성 및 개발 준비

   2. 테이블 생성 및 기타 데이터베이스 관련 설정

   3. 도메인 객체의 설계 및 클래스 작성 (~VO.java 파일)

- getter , setter , toString 생성

   4. DAO 인터페이스의 작성

   5. 실행해야 하는 기능을 인터페이스로 정의

   6. XML Mapper 의 생성과 SQL 문 작성

- src/main/resources/mapper 하위에 작성

- MyBatis에서 SQL문을 저장하는 존재를 Mapper라고 표현

   7. XML 작성 및 SQL 작성

   8. MyBatis 에서 작성된 XML Mapper 를 인식하도록 설정

 

root-context.xml 파일을 열어서 property name mapperLocations 를 추가함

ex) 작성된 mappers 폴더 내에 어떤 폴더이건 관계없이 파일의 이름이 'Mapper.xml' 로 끝나면 자동으로 인식하도록 설정

<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>

   9. DAO 구현

MyBatis 에서 DAO 를 이용하는 경우는 SqlSessionTemplate 이라는 것을 이용해서 DAO 를 구현하므SqlSessionTemplate 을 설정하는 작업부터 함

root-context.xml 를 열어서 sqlSession bean 을 추가함

 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
 	<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
 </bean>

 

   10. DAO 인터페이스를 구현한 클래스 작성

   11. 스프링상에 DAO 등록 및 테스트

 

Reference

 

스프링 MYBatis를 XML을 사용해서 작성하는 경우 코딩

출처 : 코드로 배우는 스프링 웹 프로젝트 저자 : 구멍가게 코딩단 * MyBatis 를 이용할 때 SQL 문을 사용하는 방식 - XML만을 이용해서 SQL 문을 설정, DAO 에서는 XML 을 찾아서 실행하는 코드를 작성하

subdong2.tistory.com

 

 

Mybatis에 DAO 와 Mapper - Voyager of Linux

SpringFramework 을 이용하다보면 데이터베이스 액세스를 위해서 MyBatis 를 사용하곤 한다. SQL 매퍼라고 불리기도 하는 것인데, DAO 와 Mapper 를 이용하는 방법 두가지에 대해서 알아 본다.

linux.systemv.pe.kr

 

 

MyBatis 설정 파일 - SQL Mapper 작성 방법

관련 글 - [JAVA/WEB] 웹 프로젝트에 MyBatis 세팅 및 적용하기 MyBatis 설정 파일 - SQL Mapper 작성 방법 MyBatis 사용 목적 중 하나는 DAO로부터 SQL문을 분리하는 것이다. 분리된 SQL문은 SQL mapper..

atoz-develop.tistory.com

 

 

[JAVA/WEB] 웹 프로젝트에 MyBatis 세팅 및 적용하기

관련 글 - MyBatis 설정 파일 - SQL Mapper 작성 방법 - MyBatis 설정 파일 작성 방법 [JAVA/WEB] 웹 프로젝트에 MyBatis 세팅 및 적용하기 환경 및 버전 정보 IntelliJ IDEA 2019.3 Ultimate, JDK 11, Tomcat 9,..

atoz-develop.tistory.com

 

 

[Spring] Spring MyBatis + 예제 실습

Spring MyBatis MyBatis : MyBatis는 Java Object와 SQL문 사이의 자동 Mapping기능을 지원하는 ORM Framework이다 MyBatis 특징 - 쉬운 접근성과 코드의 간결함 : 가장 간단한 persistence framework로, XML형태..

java-is-happy-things.tistory.com

 

반응형