자바 ORM 표준 JPA 프로그래밍 - 기본편 (1)
이 글은 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 듣고 정리한 내용입니다.
📌 ORM 이란?
👉🏻 object relational mapping (객체 관계 매핑)
👉🏻 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스 대로 설계하는 대신, ORM 프레임워크가 중간에서 둘을 매핑 시켜 줌. 즉, 둘의 차이를 ORM이 조정시켜 준다는 뜻이다.
📌 JPA 동작 방식
JAVA 애플리케이션이 JPA에게 명령하면 JPA가 JDBC API를 사용하여 데이터베이스에 접근하여 결과를 가져오는 방식으로 동작한다.
🔎 저장
MemberDAO에서 JPA에게 멤버객체를 넘기면 JPA가 Entity를 분석하고, Insert SQL문을 생성한다. JPA가 JDBC API를 사용하여 데이터베이스에 접근하여 결과를 가져온 후 반환한다.
🔎 조회
MemberDAO에서 찾고자 하는 Entity의 id를 넘기면 JPA는 select sql문 생성한다. JPA가 JDBC API를 사용하여 데이터베이스에 접근하여 결과를 가져온 후 반환한다.
📌 JPA의 필요성
🔎 생산성
- 저장 : jpa.persist(member)
- 조회 : Member member = jpa.find(memberId)
- 수정 : member.setName(“변경할 이름”)
- 삭제 : jpa.remove(member)
🔎 패러다임의 불일치 해결
👉🏻 상속 (저장)
jpa.persist(album);
JPA가 Insert문을 두개로 쪼개서, item 테이블, album 테이블 각각에 쿼리를 날린다.
👉🏻 상속 (조회)
Album album = jpa.find(Album.class, albumId);
JPA는 item, album 테이블을 join해서 가져오는 sql 쿼리를 날린다.
👉🏻 연관관계, 객체 그래프 탐색
//연관관계 저장
member.setTeam(team);
jpa.persist(member);
//객체 그래프 탐색
Member member = jpa.find(Member.class, memberId);
Team team = member.getTeam();
JPA를 사용하면 자유롭게 객체 그래프 탐색이 가능하다.
👉🏻 비교하기
Member member1 = jpa.find(Member.class, memberId);
Member member2 = jpa.find(Member.class, memberId);
member1과 member2는 같다!! 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장하기 때문이다.
🔎 JPA 성능 최적화
👉🏻 트랜잭션을 지원하는 쓰기지연 - INSERT
- 트랜잭션을 커밋할 때까지 INSERT SQL을 모은다.
- JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송한다.
transaction.begin(); //트랜잭션 시작
em.persist(memberA);
em.persist(memberB);
em.persist(memberC);
//INSERT SQL을 데이터베이스에 보내지 않는다.
transaction.commit(); //커밋하는 순간 데이터베이스에 INSERT SQL을 모아서 보낸다
👉🏻 지연 로딩, 즉시 로딩
- 지연 로딩 : 객체가 실제 사용될 때 데이터베이스에 SQL 쿼리 보낸다.
Member member = memberDAO.find(memberId); //select * from member
Team team = member.getTeam();
String teamName = team.getName(); //select * from team
- 즉시 로딩 : JOIN SQL로 한번에 연관된 객체까지 미리 조회한다.
Member member = memberDAO.find(memberId); // 이때 member, team 테이블 둘 다 조회
Team team = member.getTeam();
String teamName = team.getName();
Author And Source
이 문제에 관하여(자바 ORM 표준 JPA 프로그래밍 - 기본편 (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@uuuuu_j_/자바-ORM-표준-JPA-프로그래밍-기본편-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)