경주장
영속화 옵션 예시 본문
Team의 Member Entity에 영속성 전이 옵션에 PERSIST를 넣으면
팀만 persist해도 member가 모두 persist된다.
@Entity
public class Team{
...
@OneToMany(mappedBy = "team", cascade = PERSIST)
private List<Member> members = new ArrayList<>();
...
}
해당 옵션을 제거하면 Member는 삽입되지 않는다.
cascade = PERSIST 옵션이 들어가 있을때에도
Insert 쿼리는 em.flush( )를 호출하는 시점에 발생하기 때문에
팀의 참조를 영속화하는 em.persist(team1), em.persist(team2)의 호출 시점은 team 생성 직후 여도 상관없다.
멤버를 삽입해서 팀을 영속화 해보자
@Entity
public class Member {
...
@ManyToOne(fetch = LAZY, cascade = PERSIST)
@JoinColumn(name = "team_id")
private Team team;
...
}
1:N의 관계에서 어느쪽에 두어도 예상한 대로 동작하는 것을 확인 할 수 있다.
하지만 일반적으로 생각하기 편하게 팀을 삽입할때 관련된 모든 멤버를 삽입하는 것이 더 생각할 요소들이 적을 것이다.
'JPA' 카테고리의 다른 글
JPQL 예시와 N+1문제, 단일 값, 컬렉션 값 조인 (0) | 2022.01.06 |
---|---|
JPQL - 기본 문법 (0) | 2022.01.05 |
값 타입 (0) | 2022.01.05 |
프록시와 연관관계 관리 (0) | 2022.01.04 |
고급 매핑 (0) | 2022.01.04 |