JPA

주운·2024년 1월 17일

JPA

자바 ORM 기술에 대한 API 표준

JPA는 SQL문을 사용하지 않고 데이터베이스를 관리하게 하는 인터페이스다.

ORM

Object Relational Mapping

JPA는 ORM 기술의 표준 방법인 만큼 ORM에 대해서도 알아야 한다.

객체 지향 프로그래밍과 관계형 데이터베이스의 통신에서 패러다임 불일치 문제가 발생한다.

ORM은 객체와 데이터베이스 테이블을 자동으로 매핑하여 문제를 해결한다.

JPA 장점

  • SQL문을 사용하지 않고 객체 지향 언어로 구현 가능

    • 대량의 SQL Query를 쓰지 않고도 객체간의 관계를 풀어낼 수 있기 때문에 개발자가 좀 더 직관적으로 객체간의 관계를 파악할 수 있다.
  • 재사용 및 유지보수가 편리하다.

    • 매핑하게 되면 정보가 명확해지기 때문에 ERD를 보는 것에 대한 의존도를 낮출 수 있다.
    • ORM은 독립적으로 작성이 되어 있고 해당 객체들은 재사용이 가능하다.
  • DBMS에 대한 종속성이 줄어든다

  • 대부분의 ORM 프레임워크들은 DB에 종속적이지 않다.

  • 객체에 집중함으로써 DBMS를 교체하는 극단적인 작업에도 비교적 적은 리스크와 시간이 소요된다.

  • CRUD 기본 기능은 이미 구현이 되어있다.

JPA 단점

  • 완벽한 ORM 으로만 서비스를 구현하기가 어렵다.
  • DB에 직접 Query문을 보내는 것이 아니기 때문에 성능저하가 발생한다.
  • DB와 ORM 프레임워크, 내부코드에 대한 충분한 이해가 없는 경우 문제 해결이 힘들다.
  • DB와 바로 연결하는 것보다 초기설정이 더 많아지거나 복잡해 질 수있다.

JPA 구현

JPA는 ORM의 API다. JPA API는 Hibernate, EclipseLink, DataNucleus 등의 다양한 프레임워크로 구현되어있다.

JPA vs MyBatis

MyBatis

MyBatis는 SQL mapping 프레임워크다.
사용자가 작성한 SQL문으로 읽어온 데이터를 객체화한다.
RDB에 따라 SQL 문법이 다르기 떄문에 특정 RDB에 종속적이다.

MyBatis 장점

  • SQL문을 그대로 쓰기에 접근성이 좋다.
    * JPQL 등 새로운 쿼리 언어를 사용할 필요 없다.

MyBatis 단점

  • 데이터 베이스 변경에 취약하다.
  • Mapper작성, 인터페이스 설계에 JPA보다 많은 설계와 파일, 로직이 필요하다.

JPA를 사용하면 객체지향 코딩, 유지보수의 관점에서 유리할 수 있다.
객체지향 언어와 관계형 데이터베이스 사이의 차이를 해소하여 개발자는 객체지향 코드에만 집중할 수 있다.
DBMS의 제한이 없기 때문에 수정이 편리하다.

MyBatics는 SQL문과 객체를 매핑한다. SQL을 별도로 관리하여 자바 코드와 분리한다.

0개의 댓글