본문 바로가기
Spring 프레임워크/메모

MyBatis 와 Spring (Boot) 연결 요약

by Hwanii_ 2023. 9. 29.
728x90

첫번째 방법

 
참고 : 

https://hwanii96.tistory.com/423

[ SpringBoot ] MyBatis 프레임워크

MyBatis 프레임워크란 ? 데이터베이스와 상호작용하며, 쿼리문을 쉽게 작성하고 실행할 수 있도록 도와주는 프레임워크 이다. MyBatis는 데이터베이스와 자바 객체 간의 매핑을 간단하게 처리 할 수

hwanii96.tistory.com

 
[ SpringBoot ]
 
@Mapper 어노테이션을 사용해서 Spring의 루트 컨테이너가 매퍼 인터페이스를 Spring의 빈으로 등록 한다.
 
그리고,
매퍼 인터페이스와 매퍼 XML 파일과의 연결을 위한 설정을 통해, SQL 작업을 수행 할 수 있도록 하는 방식으로 연결 했다.
 
SpringBoot 에서는 application.properties 에서 모든 데이터베이스 + 마이배티스 관련 설정을 했었다.
 

더보기

 

 

 
이렇게 인터페이스와 XML 파일을 연결 하는 방식으로 연결을 하면 아래와 같은 장점을 가질 수 있게 된다.
 

더보기

 

장점 :

 

1) 가독성과 유지 보수성 

 

매퍼 인터페이스와 매퍼 XML 파일을 분리했기 때문에,

매퍼 메서드는 매퍼 인터페이스에 있고,

쿼리문은 매퍼 XML 파일에 있다.

 

복잡한 SQL 쿼리문을 XML 파일에 작성 하여 관리 한다는 것은,

쿼리문을 서버 외부의 파일에 작성 한다는 것이기 때문에,

가독성이 향상되고 코드의 유지보수가 용이해진다는 것을 의미 한다.

 

2) 타입 안정성

 

매퍼 인터페이스를 사용 하면, 컴파일 시에 타입 검사가 가능해져서, 런타임 오류를 방지 할 수 있게 된다.

 

3) IDE 지원 호환성

 

대부분의 IDE는 @Mapper 어노테이션을 지원 한다.

 

4) 자동 매핑

 

@Mapper 어노테이션을 사용 하면 MyBatis 프레임워크가,

매퍼 인터페이스와 매퍼 XML 파일 간의 매핑을 자동으로 처리 할 수 있게 된다.

 
예시)
@Mapper 어노테이션을 사용한 인터페이스와 매퍼 XML 파일을 연결
 

더보기

 

 

 

 

 

@Mapper 인터페이스를 사용 하면, 인터페이스 내부에는 정말 단순하게 CRUD 메서드만 작성 될 수 밖에 없다.

 

서비스 레이어에서 위의 인터페이스 내부의 CRUD 메서드를 호출함으로써, 

 

매퍼 XML 파일과의 연결을 통해, 데이터베이스 관련 작업을 수행 하게 된다.

 
 
 

두번째 방법

 
참고 : 

https://hwanii96.tistory.com/425

[ Spring ] MyBatis 연결 하기 01

개요 지난 프로젝트 에서, 처음에는 JDBC 인터페이스의 preparedStatement 를 사용한 방식의 DAO 였고, 두번째는 JdbcTemplate 템플릿 패턴을 활용한 방식의 DAO 였다. SpringBoot 에서 MyBatis 프레임워크 적용 방

hwanii96.tistory.com


[ Spring ]
 
스프링의 SQLSession 인터페이스를 루트 컨테이너 에서 빈으로 등록 하고,
스프링의 SqlSessionTemplate 클래스를 루트 컨테이너 에서 빈으로 등록 한 후,
SqlSessionTemplate이 SQLSession 빈을 Wrapping 하여 사용하는 방식.
 
위의 방식은, 템플릿 패턴을 활용 하기 때문에,
@Mapper 어노테이션을 사용하는 매퍼 인터페이스가 필요 없다.
 
SqlSessionTemplate을 특정한 DAO 클래스 내부에 @AutoWired 어노테이션을 사용해서 DI 하고,
SqlSessionTemplate의 다양한 CRUD 메서드를 사용 하면서,
DAO 클래스와 매퍼 XML 파일을 연결 한다.
 
물론, DAO 클래스와 매퍼 XML 파일을 연결 하기 위한 설정은 반드시 필요 하다.
 

더보기

 

 

 

 
장점 
 

더보기

 

1) 가독성과 유지 보수성 

 

매퍼 인터페이스와 매퍼 XML 파일을 분리했기 때문에,

매퍼 메서드는 매퍼 인터페이스에 있고,

쿼리문은 매퍼 XML 파일에 있다.

 

복잡한 SQL 쿼리문을 XML 파일에 작성 하여 관리 한다는 것은,

쿼리문을 서버 외부의 파일에 작성 한다는 것이기 때문에,

가독성이 향상되고 코드의 유지보수가 용이해진다는 것을 의미 한다.

 

결국 이 방식도 쿼리문이 작성 되어 있는 매퍼 XML 파일을 따로 생성 하는 방식이므로,

 

@Mapper 어노테이션을 사용한 1의 방식과 동일한 장점을 가진다고 할 수 있겠다.

 

단점 : 

 

1) 기본 작업의 반복

 

인터페이스 사용이 아니기 때문에,

결국 DAO 클래스 내부에 CRUD 메서드 안에 "기능" 을 작성 해야 한다.

 
예시)
템플릿 패턴을 사용한 DAO 클래스와 매퍼 XML 파일을 연결
 

더보기

 

템플릿 패턴을 사용한 경우라면 ?

 

인터페이스를 사용 하지 않는 방식이므로, 아래와 같이 코드가 작성 되게 된다.

 

비록 반복적인 작업을 효율적으로 처리 하기 위해 템플릿 패턴을 사용 했지만,

 

그래도 인터페이스 보단 상대적으로 코드를 더 작성 할 수 밖에 없게 된다.

 

 

 

 
 
 
 
 
글을 마무리 하며
 
위에서, 
1) 스프링부트와 마이배티스 연결 방법
2) 스프링과 마이배티스 연결 방법
 
두가지에 대해서 간략히 정리를 했다.
 
다음 게시글 에서는 스프링 프로젝트 에서 
SQLSessionTemplate 을 사용한 DAO 클래스와 매퍼 XML 파일을 연결한 방식이 아닌,
 
스프링 부트 연결 방식 처럼,
매퍼 인터페이스와 매퍼 XML 파일을 연결하는 방식을 정리 해보려고 한다.
 
링크 :

https://hwanii96.tistory.com/42
7

[ Spring ] MyBatis 연결 하기 02

이 게시글은 Spring 프로젝트 ( Maven ) 에서 매퍼 인터페이스와 매퍼 XML 파일을 연결하는 방식을 정리 한다. 아래의 링크 에서는 Spring 프로젝트 에서 SQLSessionTemplate 템플릿 패턴을 활용 하여, SQLSessio

hwanii96.tistory.com

반응형