JPA란?
- Java Persistence API
- 자바 ORM 기술 표준
ORM이란?
- Object-relational mapping(객체 관계 매핑)
- 객체는 객체대로 설계
- 관계형 데이터베이스는 관계형 데이터베이스대로 설계
-> ORM 프레임워크가 중간에서 매핑문제를 해곃해준다.
JPA와 JDBC API 동작
- 기존 :
java -> JDBC API -> DB
- JPA 적용 :
java -> JPA -> JDBC API -> DB
entity object를 분석해 알아서 JDBC API를 만들어줌.
- 반환시에도
entity object를 알아서 만들어줌.
JPA의 장점
- 생산성(객체 중심으로 개발)
- 유지보수
- 패러다임의 불일치 해결
- 성능
- 데이터 접근 추상화와 벤더 독립성
생산성
sql -> 객체로 되어 쉽게 사용 가능
저장 : jpa.persist(object)
조회 : Object object = jpa.find(object)
수정 : object.setName(“변경할 이름”)
삭제 : jpa.remove(object)
유지보수
기존 : 필드 변경시 모든 SQL 수정해야함
JPA : 객체의 필드만 추가하면 됨
패러다임 불일치 해결
JPA가 객체를 반환해 주며, 상속, 연관관계, 객체그래프 탐색, 비교가 쉽게 해결된다.
성능
- 1차 캐시와 동일성(identity) 보장
- 같은
트랜잭션 안에서는 같은 entity를 반환 -> 같은 조회를 요청할 경우 첫번째는 sql을 실행하지만 두 번째부터는 JPA의 메모리에서 가져옴.
- 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
- insert시 commit 순간에 데이터베이스에 한번에 전송
- 지연 로딩(Lazy Loading)
- 객체가 실제 사용될 때 로딩
- 즉시 로딩도 지원함.
참조
- 인프런 : 자바 ORM 표준 JPA 프로그래밍 - 기본편
- 링크