1.JPA의 정의 와 ORM 에 대해 설명하는 글입니다.
2.JPA 사용했을시, 장단점에 대해 설명하는 글입니다.
JPA란 자바 진영에서 사용하는 ORM 기술 표준 명세입니다. 즉 JPA는 인터페이스이고, 이것을 구현한 구현체는 대표적으로 Hibernate가 있습니다.
(이외의 구현체 : EclipseLink, DateNucleus)
ORM이란(Object Relational Mapping)의 약자로 관계형 DB Table과 어플리케이션 Class를 Mapping 해주는 것을 의미하며, 어플리케이션 객체를 RDB 테이블에 영속화 하는것을 의미한다
어떤 차이가 있었을까?
상속 : 객체랑 다르게 테이블에는 상속이라는 기능이 없어서, 개발자가 여러 설정/쿼리를 생성했어야함 -> JPA에서는 여러 쿼리를 한번에 실행해서 해결해준다.
연관관계: 객체는 참조를 사용해서 연관된 객체를 조회하지만, 테이블은 왜리키로 연관관계를 설정하고 조인으로 연관 테이블을 조회한다.
->JPA에서는 연관관계에 대해 정의해서, 각 설정마다 다르게 데이터를 조회해온다.
비교: DB는 PK로 각 로우르르 구분하는 반면, 객체는 동일성/동등성을 비교를 한다.
JPA는 DB의 같은 로우를 조회할 경우, 1차 캐시로 동일성 비교를 보장한다.
객체지향적 프로그래밍
Hibernate 구현체를 사용할 경우, 특정 데이터 베이스에 종속되지 않음, JPA는 추상화한 데이터 접근 계층을 제공하기 때문에, 설정파일에 어떤 데이터베이스를 사용하는지 알려주면 쉽게 변경하 수 있다. (Hiberante.dialect.DB명) -> 이런 특성 때문에 특정 DB에 종속된 함수들은 제공하지 않는다.
https://velog.io/@sooyoungh/JPA를-쓰는-이유와-JPA-소개
https://velog.io/@dev_zzame/JPA란-무엇인가-그리고-장단점은-뭐가-있을까