JPA #1 - JPA란?

함형주·2022년 10월 20일
0

JPA

목록 보기
1/7

질문, 피드백 등 모든 댓글 환영합니다.

JPA란?

JPA(Java Persistence API)는 JAVA의 표준 ORM(Object-relational mapping)으로 관계형 데이터베이스(RDB)를 관리하는 API의 모음입니다. 그 구현체로 Hibernate, EclipseLink, DataNucleus가 존재합니다.

JPA는 JDBC를 사용하여 자바 애플리케이션과 RDB를 연결합니다.

그렇다면 JDBC를 직접 사용하여 SQL을 작성하지 않고 굳이 JPA를 사용하는 이유는 무엇일까요?

객체와 RDB와의 패러다임 차이

객체 지향적으로 설계된 도메인 모델과 RDB 사이에는 큰 간극이 존재합니다. 예를 들자면 객체지향에서 사용되는 다형성이나 상속 기능은 RDB에서는 제공하지 않습니다. 또한 연관관계를 구성하는 방식(객체는 참조 방식, RDB는 외래키 사용)도 다르고 객체와 데이터베이스는 엄연히 다르기 때문에 객체를 데이터베이스 스펙에 맞게 변환하는 작업이 필요합니다.

이러한 객체 지향 도메인과 RDB 사이의 간극을 해소하기 위해 핵심 비지니스 로직과는 상관없이 수많은 코드가 추가로 필요했고 JPA라는 ORM 프레임워크를 제공하므로써 이 문제를 해결했습니다.

JPA 덕분에 개발자는 객체를 RDB에 맞게 변환하는 로직이나 심지어는 SQL(JDBC)과 관련된 로직마저 작성하지 않아도 되고 이 과정에서 JPA로부터 유용한 기능을 제공받을 수 있어 개발 생산성이 극대화 됩니다.

JPA가 제공하는 기능

SQL 처리

  • JDBC를 직접 이용할 일 없이 JPA에서 사용하는 EntityManagerfind(), persist(), remove()를 통해 select, insert, delete를, merge()와 변경 감지 기능을 통해 update 쿼리를 대신 작성해줍니다.

객체와 테이블 매핑, 연관관계 매핑

  • JPA에서 제공하는 어노테이션으로 쉽게 객체와 테이블을 매핑하고 연관관계를 설정할 수 있습니다.

PersistenceContext (영속성 컨텍스트)

  • JPA는 영속성 컨텍스트를 제공하므로써 1차 캐시, 동일성 보장, 프록시를 이용한 쓰기 지연(transactional write-behind), 지연 로딩, 변경 감지 등의 기능을 제공합니다.
profile
평범한 대학생의 공부 일기?

0개의 댓글