ecsimsw
JPA / 객체를 컬렉션을 저장하듯 DB에 저장할 순 없을까 / 김영한 본문
"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