ecsimsw

JPA / 객체를 컬렉션을 저장하듯 DB에 저장할 순 없을까 / 김영한 본문

JPA / 객체를 컬렉션을 저장하듯 DB에 저장할 순 없을까 / 김영한

JinHwan Kim 2020. 6. 24. 05:14

"T아카데미 / JPA 프로그래밍 기본기 다지기 - 김영한 " 강좌를 듣고 정리한 글입니다.

 

JPA

 

  "객체를 자바 컬렉션을 저장하듯 DB에 저장할 순 없을까"

 

  Java Persistence API / ORM을 따른 Java 진영 표준 API

 

ORM

 

  Object Relation Mapping 

 

  객체는 객체대로 설계하고, 관계형 DB는 관계형대로 설계하고. 

 

  -> ORM이 중간에서 이 둘을 매핑한다!!

 

구조 

 

기능 

 

  1. Entity 분석

 

  2. Query 생성

 

  3. JDBC API 사용

 

  4. 패러다임 불일치 해결  ( 이를 테면 상속, 연관 관계, 엔티티 관계 )

 

 

CRUD

C: jpa.persist(member)

R: Member member = jpa.find(memberId)

U: member.setName("setName")

D: jpa.remove(member)

 

성능 최적화

 

1. 엔티티 동일성 보장

String memberId = "945132";
Member mem1 = jpa.find(Member.class, memberId);
Member mem2 = jpa.find(Member.class, memberId);

mem1==mem2 -> true

  1차 캐시를 사용하기 때문에, 같은 트랜젝션 내에서 처리한 entity의 동일성을 보장 받을 수 있다.

 

2. 지연 로딩

Member mem = memberDAO.find(memberId);    // SELECT FROM MEMBER

Order order = mem.getOrder();             // 지연

String orderName = order.getName();       // SELECT FROM ORDER

  getOrder()에서 order를 찾는 쿼리를 실행하는 것이 아니라, 그것을 지연했다가 실제로 order가 사용되는 order.getName()에서 쿼리가 실행된다.

 

  물론 경우에 따라 즉시 로딩으로 처리하도록 할 수 도 있다.

'Database > JPA, ORM' 카테고리의 다른 글

JPA / 연관관계 매핑 / 양방향 매핑 / MappedBy  (2) 2020.06.26
JPA / 연관 관계 매핑 / 단방향 매핑  (0) 2020.06.26
JPA / 기본 키 매핑  (0) 2020.06.26
JPA / 필드와 컬럼 매핑  (0) 2020.06.25
JPA / EntitiyManager  (0) 2020.06.25
Comments