250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- BOJ
- 스토어드 프로시저
- 지연로딩
- 낙관적락
- 백트래킹
- eager
- shared lock
- 다대다
- 연관관계
- JPQL
- querydsl
- SQL프로그래밍
- PS
- CHECK OPTION
- 유니크제약조건
- execute
- 이진탐색
- fetch
- 동적sql
- 데코레이터
- 스프링 폼
- exclusive lock
- FetchType
- 힙
- 연결리스트
- 즉시로딩
- 비관적락
- dfs
- 일대다
- 다대일
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
연관관계 편의 메소드 본문
728x90
@Entity
@Getter
public class Member {
@Id
@Column(name = "MEMBER_ID")
private String id;
private String username;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
//==연관관계 메소드==//
public void setTeam(Team team){
// 기존 팀과 관계를 제거
if (this.team != null){
this.team.getMembers().remove(this);
}
this.team = team;
team.getMembers().add(this);
}
}
- 한 번에 양방향 관계를 설정하는 메소드를 연관관계 편의 메소드라 한다.
- member.setTeam(team) 과 team.getMembers().add(member) 를 각각 호출하다 보면 실수로 둘 중 하나만 호출해서 양방향이 깨질 수 있기 때문에, 두 코드를 하나인 것처럼 사용하는 것이 안전하다.
- 연관관계를 변경할 떄에는 기존 팀이 있으면 기존 팀과 회원의 연관관계를 삭제하는 코드를 추가해야 한다.
*참고
- 관계를 변경하고 영속성 컨텍스트가 아직 살아있는 상태에서 teamA의 getMembers() 를 호출하면 member1 이 반환된다.
- 따라서 변경된 연관관계는 설명한 것처럼 관계를 제거한느 것이 안전하다.
'JPA' 카테고리의 다른 글
복합 키 : 비식별 관계 매핑 (1) | 2024.04.04 |
---|---|
식별 관계 vs 비식별 관계 (0) | 2024.04.04 |
@MappedSuperclass (1) | 2024.04.03 |
필드와 컬럼 매핑 : 레퍼런스 (0) | 2024.04.01 |
유니크 제약조건 - uniqueConstraints (0) | 2024.04.01 |