JPA(Java Persistence API)는 자바의 표준 ORM(Object-relational mapping)으로 자바 어플리케이션과 JDBC API의 인터페이스 역할을 합니다.
JPA는 실제 JDBC와 연결을 동작시키는 것이 아닌 표준 인터페이스 모음이므로 사용을 위해선 실제 구현체를 가진 프레임워크를 이용합니다.
JPA는 ORM 인터페이스이므로 객체 중심으로 JDBC에 접근하도록 합니다.
모든 엔티티 객체는 각각의 테이블에 매칭되어 CRUD
동작의 쿼리를 JPA가 생성하여 JDBC에 전달합니다. 즉 쿼리문의 작성이 필요 없습니다.
CRUD
에 맞는 동작을 하는 JPA 표준 메서드들을 제공하여 JDBC에 접근합니다.
persist(엔티티)
)find(pk)
)ResultSet
)을 목표 엔티티에 매핑JPA를 통해 SQL 문을 작성하는 것이 아닌 JPA 메서드로 개발할 수 있습니다. JPA 표준 메서드를 이용해 Collection
에 데이터를 넣고 가져오는 것처럼 이용할 수 있습니다.
쿼리 중심 개발은 자바 객체와 관계형 DB의 패러다임 불일치라는 문제점을 갖고 있습니다.
객체지향의 다형성 추상화 등의 특성의 불일치로 모든 상속 및 참조 관계 등에서 각각의 쿼리를 작성해야합니다.
연관 관계 엔티티 탐색 과정에서 비효율적입니다.
equals()
메서드 재정의로 동등성을 비교할 수 있으나 완전한 동일성(hashcode
의 차이)을 보장할 수 없음객체 중심의 데이터베이스 매핑을 지원하기 때문에 작성된 문제점을 대부분 해결할 수 있습니다.
INSERT
및 SELECT
또한 JPA 에서 각각의 테이블을 만들고 매핑 및 조인Reference
https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html