인프런 강의 < 자바 ORM 표준 JPA 프로그래밍 - 기본편 > 정리



SQL 중심개발에서 -> 객체 중심으로
생산성(CRUD)
유지보수

패러다임의 불일치 해결
저장
jpa.persist(album); // 개발자가 할일
INSERT INTO ITEM .. // JPA가 처리 해줌
INSERT INTO ALBUM .. // JPA가 처리 해줌
조회
Album album = jpa.find(Album.class, albumId); // 개발자가 할일
SELECT ~~
FROM ~~
JOIN ~~ // JPA가 처리 해줌
연관관계 저장
member.setTeam(team);
jpa.persist(member);
객체 그래프 탐색
Member member = jpa.find(Member.class, memberId);
Team team = member.getTeam();
성능
1차 캐시와 동일성 보장
같은 트랜잭션 안에서는 같은 엔티티 반환
DB Isolation Level이 Read Commit이어도 애플리케이션에서 Repeatable Read 보장
String memberId = "100";
Member m1 = jpa.find(Member.class, memberId); //SQL
Member m2 = jpa.find(Member.class, memberId); //캐시
println(m1 == m2) // true
트랜잭션을 지원하는 쓰기 지연
INSERT

UPDATE

지연 로딩: jpa에서 옵션으로 언제든지 바꿀 수 있음

데이터 접근 추상화와 벤더 독립성
표준
< 자료 출처: 자바 ORM 표준 JPA 프로그래밍 - 기본편 >