본문 바로가기
FrameWork/Spring

MyBatis

by titlejjk 2023. 6. 19.

MyBatis는 자바 기반의 오픈 소스 퍼시스턴스 프레임워크이다. 데이터베이스와의 상호작용을 단순화하여 개발자가 SQL쿼리를 사용하여 데이터베이스 작업을 수행할 수 있도록 도와준다. MyBatis는 데이터베이스와의 상호작용을 처리하는 데 필요한 코드작성에 중점을 두고 있다,

 

MyBatis는 개발자에게 SQL 매핑을 제공하여 SQL쿼리와 데이터베이스 테이블간의 매핑을 정의해준다. 이덕에 개발자는 복잡한 JDBC코드를 작성하지 않고 데이터베이스 작업을 수행할 수 있다.

 

XML또는 어노테이션 기반의 매핑파일을 사용하여 정의한다. 이를 통해 개발자는 SQL쿼리와 자바 객체간의 매핑을 명시적으로 지정할수 있으며 SqlSession이라는 MyBatis의 핵심인터페이스로 데이터베이스와의 상호작용을 수행한다. SqlSession을 사용하여 SQL 쿼리를 실행하고 데이터베이스 작업을 수행한다.

그리고 동적 SQL쿼리 작성을 지원하기 위해 매개변수 바인딩을 제공한다.

<!-- parameterType은  파라미터로 넘어오는 데이터의 타입을 뜻함 -->
      INSERT INTO MEMBER(num, name, addr) 
      VALUES(member_seq.NEXTVAL, #{name}, #{addr})
      <!-- #{name}은 MemberDto 타입 데이터에서 'name' 필드에 있는 값을 binding 해주세요~ 라는 뜻 -->

쿼리 결과나 매개 변수에 따라 결과를 캐시하여 동일한 쿼리에 대한 반복적인 데이터베이스 호출을 방지하는 캐싱 기능을 제공하며, 개발자의 선언방식으로 트랜잭션을 관리하며 원자적으로 실행, 롤백이 가능하다.

 

MyBatis의 장점

  • 간결하고 직관적인 SQL Mapping
    SQL쿼리와 자바 객체간의 매핑을 명시적으로 정의하기 때문에 데이터베이스 작업을 이해하고 제어하기 쉽다.
  • 유연성과 제어력
    개발자에게 SQL쿼리의 작성과 실행에 많은 제어력을 제공
  • 성능 개선을 위한 캐싱
    쿼리 결과나 매개 변수에 따라 결과를 캐시하여 반복적인 데이터호출을 제어
  • 트랜잭션 관리의 간소화
    트랜잭션 관리를 지원하여 데이터베이스 작업을 안전하고 일관되게 유지

MyBatis의 단점

  • 학습 곡선과 초기 설정의 복잡성
    MyBatis는 SQL매핑을 위한 XML파일이나 어노테이션을 사용하므로 초기 설정 및 프로젝트 구성에 약간의 추가작업이 필요하다. 그로인한 MyBatis의 기능을 모두 이해하고 활용하기 위해서는 학습 곡선을 거쳐야한다.
  • 일부 개발자에게는 과도한 자유로움
    MyBatis는 SQL과 자바 코드간의 분리를 제공하므로 개발자가 직접 SQL을 작성하고 매핑을 지정할 수 있다. 하지만 이러한 자유로움이 개발자간의 일관된 패턴과 가이드라인이 없을 경우 유지보수의 어려움이 생긴다.

요즘 MyBatis의 점유율은 여전히 많은 개발자들에게 사용되고 있으며, 특히 기존의 JDBC기반 프로젝트나 SQL에 대한 직접적인 제어가 필요한 경우에 많이 선택되고 있다. 다만, 다른 대안으로서 ORM(Object-Relational Mapping)프레임워크인 Hibernate, Spring Data JPA등이 인기를 얻고 있기 때문에 ORM프레임워크를 선호하는 개발자도 증가하는 추세이다.

 

'FrameWork > Spring' 카테고리의 다른 글

Spring Interceptor  (0) 2023.06.23
Spring DI(Dependency Injection)  (0) 2023.06.19
@RequestMapping  (0) 2023.06.16
@ResponseBody  (0) 2023.06.16
DispatcherServlet  (0) 2023.06.16

댓글