JPA 관계 요약

Tae hyun·2023년 2월 17일
0

테이블관계
부모엔티티(먼저자료가 추가되는 쪽)와 자식엔티티

주식별자관계: 부모엔티티의 pk를 자식엔티티의 pk로 참조
비식별자관계: 부모엔티티의 pk를 자식엔티티의 일반 컬럼으로 참조

연관관계용 프로퍼티
종류:
@ManyToOne: 자식엔티티객체에서 설정
@OneToMany: 부모엔티티객체에서 설정
@OneToOne: 자식엔티티객체/부모엔티티객체에서 설정
@ManyToMany(x)

JPA연관관계용 프로퍼티
fetch-SELECT JOIN용(로딩)
@ManyToOne는 Eager(즉시로딩)가 기본값: 자식엔티티를 검색할때 부모엔티티도 검색-
JOIN한다
@OneToMany는 기본값이 LAZY(지연로딩) : 부모엔티티 검색할때 자식엔티티 검색안함
JOIN안한다
cascade-DML용 PERSIST, MERGE,DETECH, REFRESH(영속성전이)
, 이상태들을 모두 관리하는 ALL
지금 사용하고 있는 객체의 상태도가 바뀔 때 연관되어있는 객체의 상태도까지 바뀌는것
@ManyToOne(cascade=CascadeType.PERSIST)
private 부모엔티티 변수;
->자식엔티티객체가 persist()의 대상이될때, 부모엔티티객체도 persist()의 대상이 된다
INSERT될 때 INSERT된다

cascadetype을 delete를 준다면 자식엔티티객체가 remove()의 대상이 될때 부모엔티티객체도 remove()의 대상이 된다. 주문쪽에서 설정해볼수있다'
@OneToMany(casCade=CascadeType.PERSIST)
private :List<자식엔티티>변수;
->부모엔티티객체가 persist()대상이 될 때, 자식엔티티객체도 persist의 대상이 된다.
persist와 merge를 구분하기 어려우니 save메서드만 호출하면 알아서 둘중하나를 호출할거라 했다.

save(); --> Insert

...
mappedby

profile
안녕하세요 개발하는 알파카입니다. https://github.com/oh-taehyun

0개의 댓글