JPA vs Mybatis

Boaz Kang·2024년 5월 11일

백엔드에서 데이터를 저장하고 조회하려면 데이터베이스를 활용해야 하는데, 백엔드에서 데이터베이스를 사용하는 프레임워크로 가장 많이 쓰이는 기술이 'Mybatis''JPA'이다.

데이터베이스 접속을 편하게 사용하기 위해 SQL Mapper 기술과, ORM(Object Relational Mapping) 기술을 제공한다. 둘다 DB와의 연동, 저장을 위한 기술이며, SQL Mapper'개발자가 작성한 SQL 실행 결과를 객체에 매핑' 시켜주는 프레임워크이며, ORM은 객체와 DB의 데이터를 '자동으로 매핑' 시켜주는 프레임워크를 말한다.

SQL Mapper 기술을 제공하는 것이 'MyBatis'이며, ORM 기술을 제공하는 것이 'JPA'이다.

Mybatis

MyBatis프레임워크는 반복적인 JDBC 프로그래밍을 단순화하여, 불필요한 Boilerplate 코드를 제거하고, Java 소스코드에서 SQL문을 분리하여 별도의 XML파일로 저장하고, 이 둘을 서로 연결시켜주는 기능을 제공한다.

1. JAVA 코드와 SQL매핑

2. 동적 SQL 생성 기능

MyBatis Boilerplate 코드 제거 및 SQL문 분리 외에도 동적인 SQL 생성 기능을 제공하여 프로그램 실행중에 입력되는 파라미터에 따라 서로 다른 SQL문을 동적으로 생성해 내는 기능을 제공해준다.

JPA(Java Persistence API)

JPA는 Java 객체와 관계형 데이터베이스 간의 매핑을 위한 API이다.
JPA는 ORM을 구현하는 자바 표준 스펙으로, 개발자가 객체지향 프로그래밍 언어에서 사용하는 객체 모델과 관계형 데이터베이스의 테이블 간의 매핑을 자동으로 처리해준다.

1. JPA가 생겨난 이유

MyBatis와 같이 SQL문과 Java 코드를 연계하는 접근 방식이 아니라 Java객체와 DB엔티티(테이블) 자체를 그대로 매핑해서 처리할 수 있는 접근 방식을 채택한 새로운 표준기술이 등장했는데, 바로 JPA이다.

JPA의 접근방식은 이런 ORM기술을 의미한다. 즉, 객체와 데이터베이스 간의 매핑 기술을 의미하며, Java 개발자가 좀 더 객체지향 관점에서 개발할 수 있게 하고, 개발을 용이하게 해주어서 DB와 Java 간의 불일치를 해소해 줍니다.

이러한 ORM 기술을 실제 구현해서 만들어진 프레임워크가 Hibernate이다. 널리 사용되는 것은 Hibernate이다.

Java와 DB 데이터 간의 매핑을 자동화해주어서 개발자는 SQL 문을 작성할 필요가 없어지고, DB가 바뀌어도 DB에 따라 새로운 SQL을 작성할 필요가 없이 Hibernate에서 DB에 맞는 적합한 SQL 문을 생성해 줍니다.

3. JPA 특징

MyBatis와 다르게 SQL 문의 작성이 불필요하며 ORM 내부적으로 java 메소드에 적합한 SQL 문이 자동으로 생성이 되어 실행되게 됩니다. Java 개발자는 클래스만 만들어서 사용하고, ORM 프레임워크가 자동으로 관련된 SQL을 만들어 줍니다.

즉, Java 개발자는 jpa.persist(member)라고 사용하면, Insert SQL 문이 자동으로 생성되어 DB에 저장이 됩니다.

또한, jpa.find(memberId)라고 사용하면, 자동으로 Select SQL 문이 자동으로 생성되어 DB에 조회가 됩니다.

MyBatis와 JPA 모두 DB를 사용할 때 번거로운 반복작업을 없애줍니다. MyBatis는 SQL 문을 Java와 분리하여 별도 파일로 관리할 수 있어서, SQL 개발과 유지 보수에 용이하고, JPA는 SQL 문을 아예 만들 필요가 없기 때문에 더욱 자동화되고 반복작업을 더욱 줄여줍니다.

MyBatis 장점

🤫<참고 자료>
https://www.elancer.co.kr/blog/view?seq=231

profile
Just Do It

0개의 댓글