강의를 들으며 내가 알고 있는 내용을 점검하고,
새로 배운 내용을 정리하며,
궁금한 내용을 알아가며 학습해나가는 것을 목표로 합니다.
JPA는 RDB의 테이블과 매핑된 객체(Entity)를 객체답게 사용할 수 있도록 여러가지 고급 매핑 전략을 제공해줍니다.
JPA에서 식별자를 둘 이상 사용하려면 별도의 식별자 클래스를 만들어야 한다 .
JPA는 영속성 컨텍스트에 엔티티를 보관할때, eqauls & hashCode를 이용해서 동등성 비교를 한다
객체는 객체 그래프로 연관된 객체를 탐색한다.
Entity는 객체가 데이터베이스(RDB)와 매핑되어 있어서 자유롭개 객체를 탐색하는데 제한이 있다.
// order.getMember() → orders 테이블과 member 테이블의 정보를 모두 가져와야 하는상태.
JPA는 프록시 객체라는 기술을 사용하여 연관된 객체를 처음부터 데이터베이스에서 조회하지 않고, 실제 사용하는 시점에 조회할 수 있다.
지연로딩
엔티티를 조회할때, 연관된 엔티티를 함께 조회한다.
LAZY FETCH
즉시로딩
연관된 엔티티를 실제 사용할 때 조회한다.
EAGER FETCH
특정 엔티티를 영속 상태로 만들 때, 연관된 엔티티도 함께 영속상태로 만들고 싶을때, 사용한다.
부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는 기능이다.
스프링에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트이다.
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:~/order;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
jpa:
open-in-view: false
hibernate:
ddl-auto: create-drop
show-sql: true
properties:
hibernate.format_sql: true