728x90
일대일
각 엔티티는 상대 엔티티와 하나의 관계만을 가집니다.
데이터베이스에서는 외래키에 UNIQUE 제약조건이 추가된 상황
사용 예시
Member
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "MEMBER_ID")
private Long id;
@Column(name = "USERNAME")
private String username;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TEAM_ID")
private Team team;
@OneToOne
@JoinColumn(name = "LOCKER_ID")
private Locker locker;
Member
에서 Locker
를 관리하기 때문에 @JoinColumn
을 추가합니다.Member
에서 Locker
에 데이터를 생성, 수정을 합니다.
반대쪽엔 Locker
에서 mappedBy
로 Member
의 locker
와 매핑이 되고 조회를 담당합니다
Locker
@Entity
public class Locker {
@Id
@GeneratedValue
@Column(name = "LOCKER_ID")
private Long id;
private String name;
@OneToOne(mappedBy = "locker")
private Member member;
}
장단점
장점
- 편리한 데이터 접근: 관련 데이터에 쉽게 접근할 수 있습니다.
단점
- 성능 이슈: 항상 두 테이블을 조인해야 할 수 있어 성능에 영향을 줄 수 있습니다.
- 복잡성: 양방향 관계 설정 시 복잡도가 증가할 수 있습니다.
- 확정성 제한: 향후 1:N 관계로 변경이 필요한 경우 구조 변경이 필요합니다.
728x90