MyBatis ?
백엔드에서 데이터를 저장하고 조회하려면 데이터베이스를 활용해야 한다.
Java 기반의 Spring 또는 Springboot에서 데이터 베이스 접속을 편하게 사용하기 위해서는 MyBatisSQL Mapper 기술 또는 ORM 기술이 필요하다. 둘 다 DB와의 연동, 저장을 위한 기술이며 SQL Mapper는 '개발자가 작성한 SQL 실행 결과를 객체에 매핑' 시켜주는 프레임워크이며, ORM은 객체와 DB의 데이터를 '자동으로 매핑'시켜주는 프레임워크를 말한다.
SQL Mapper 기술을 제공하는 것이 'MyBatis'이며, ORM 기술을 제공하는 것이 'JPA(Java Persistence Api)'이다. 두 가지 기술은 모두 데이터를 관계형 데이터베이스에 저장, 즉 영속화(Persistence) 시킨다는 측면에서는 동일하지만, 서로 다른 접근 방식을 채택하고 있다.
장점
- Java 코드와 SQL 매핑
MyBatis를 사용할 경우 SQL문을 XML 파일에 별도로 저장하기 때문에 코드를 보기에도 편하고 수정도 용이하다.
XML 파일에 SQL문을 작성하면 MyBatis가 Java 메소드와 SQL문을 매핑시켜 자동으로 연결해준다.
- 동적 SQL 생성 기능
MyBatis는 동적인 SQL문 생성 기능을 제공하여 프로그램 실행 중 입력되는 파라미터에 따라 서로 다른 SQL문을 동적으로 생성해내는 기능을 제공한다. 이는 MyBatis 내에 <if> <choose> <otherwise> <foreach> 등의 문법을 지원하기 때문에 가능한 것이다.
단점
- CRUD 단순 작업에 반복 수작업 필요
SQL을 직접 만들어야 하므로 CRUD같은 기본 코드에 대해서 단순 코드를 반복작업 해야한다. 그렇게 되면 개발 생산성이 떨어지고 코드에 대한 유지보수도 힘들다.
- 데이터 베이스에 종속적
특정 DB를 기준으로 SQL문이 작성되어 있어 DB를 변경하게 된다면 SQL문을 전부 확인하며 수정해야 한다.
참고 페이지. 더 자세한 설명. JPA와 장단점 비교
https://www.elancer.co.kr/blog/view?seq=231
JPA vs Mybatis, 현직 개발자는 이럴 때 사용합니다. I 이랜서 블로그
서버에서 데이터 베이스를 효율적으로 사용하기 위해 사용하는 JPA와 Mybatis를 실무에서는 언제 어떻게 사용할까요? 이랜서에서 알려드립니다. I 소트프웨어, 소프트웨어 개발자, 네이버 소프트
www.elancer.co.kr
'Backend > 기타' 카테고리의 다른 글
| [에러] 'The import javax.annotation.Resource cannot be resolved' (0) | 2024.06.03 |
|---|---|
| Parameter와 Argument (0) | 2024.06.03 |
| [에러] Interceptor 설정 에러 : The prefix "mvc" for element "mvc:interceptors" is not bound (0) | 2024.06.03 |
| JUnit 단위 테스트 (0) | 2024.06.03 |
| 알고리즘(Algorithm)이란? (0) | 2024.06.02 |