
웹 애플리케이션을 개발할 때 주로 사용되는 프레임워크는 Java 기반의 spring과 spring boot이다. 백엔드에서 데이터를 저장하고 조회할 때 데이터베이스를 활용하게 되는데, 데이터베이스를 사용하기 위해 대표적인 프레임워크인 MyBatis와 JPA 기술이 사용된다.
MyBatis와 JPA 모두 DB연동, 저장을 위한 기술이지만 서로 다른 접근법을 가진다. MyBatis는 SQL Mapper 기술을 제공하며, JPA는 ORM(Object Relational Mapping) 기술을 제공한다.
해당 포스트는 데이터베이스를 효율적으로 사용하기 위한 MyBatis와 JPA 기술을 각각 정리해보려고 한다.
MyBatis는 반복적인 JDBC 프로그래밍을 단순화하여 객체지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 쉽게 할 수 있게 도와주는 프레임워크이다.
다음으로는 JPA(Java Persistence API)에 대해 알아보겠다.
JPA는 Java 객체와 관계형 데이터베이스 간의 매핑을 위한 프레임워크이다. JPA는 ORM(Object-Relational Mapping)을 구현하는 자바 표준 스펙으로, 개발자가 객체지향 프로그래밍 언어에서 사용하는 객체 모델과 관계형 데이터베이스의 테이블 간의 매핑을 자동으로 처리해 준다.
MyBatis와 같이 SQL 문과 Java 코드를 연계하는 방식이 아니라 Java 객체와 DB 엔티티(테이블) 자체를 그대로 매핑해서 처리할 수 있는 접근 방식이다.
데이터베이스는 데이터 중심의 구조를 가지고 있고, Java는 객체지향적인 구조로 관리되기 때문에 둘 사이에 데이터를 직접적으로 쉽게 가져오거나 저장하는 방법은 어려웠다. 이 문제를 해결하기 위해 JPA는 ORM 기술을 사용한다.
ORM(Object Relational Mapping)은 객체와 관계형 데이터베이스(테이블) 간의 데이터를 매핑하기 위한 기술이다. 객체 지향 프로그래밍에서 사용되는 객체와 관계형 데이터베이스에서 사용되는 테이블 간의 차이를 해결하기 위해, 객체와 데이터베이스 간의 매핑을 자동으로 수행한다.
Java 개발자가 좀 더 객체지향 관점에서 개발할 수 있게 하고, 개발을 용이하게 해주어서 DB와 Java 간의 불일치를 해소할 수 있다.
복잡한 쿼리와 SQL 제어가 필요한 경우는 MyBatis로 개발할 수 있다. 기존 SQL 경험이 풍부하거나, 특정 데이터베이스에 최적화된 SQL 작성이 필요한 경우는 MyBatis를 선택할 수 있다.
간단한 매핑 및 객체 지향적인 접근이 필요한 경우는 JPA가 SQL작성 등의 반복적인 부분을 해결해 준다. 표준화된 인터페이스와 자동 매핑이 중요하며, 다양한 데이터베이스에 대응해야 하는 경우는 JPA를 선택하면 DB가 변경되더라도 유동적인 이동이 가능하다는 장점이 있다.
참고 링크 🙇🏻♂️
https://dbjh.tistory.com/77
https://velog.io/@cyseok123/MyBatis
https://www.elancer.co.kr/blog/detail/231