JPA 연관 관계 매핑1_일대일 단방향 매핑하기
Entity들은 대부분 다른 Entity와 연관 관계를 맺고 있다. JPA에서는 Entity에 연관 관계를 매핑해두고 필요할 때 해당 Entity와 연관된 Entity를 사용해 조금 더 객체지향적인 프로그래밍(OOP)을 할 수 있도록 도와준다.
회원 정보를 담고 있는 Member라는 Entity와 각 회원들의 장바구니를 나타내는 Entity가 아래와 같이 있다.
@Entity
@Table(name = "member")
@Getter @Setter
@ToString
public class Member {
@Id
@Column(name="member_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String email;
private String password;
private String address;
@Enumerated(EnumType.STRING)
private Role role;
public static Member createMember(MemberFormDto memberFormDto, PasswordEncoder passwordEncoder) {
Member member = new Member();
member.setName(memberFormDto.getName());
member.setEmail(memberFormDto.getEmail());
member.setAddress(memberFormDto.getAddress());
member.setRole(Role.USER);
String password = passwordEncoder.encode(memberFormDto.getPassword());
member.setPassword(password);
return member;
}
}
@Entity
@Table(name = "cart")
@Getter @Setter
@ToString
public class Cart {
@Id
@Column(name = "cart_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
@JoinColumn(name = "member_id")
private Member member;
}
쇼핑몰에서 회원들은 각자 자신의 장바구니를 하나씩 갖고 있다. 장바구니 입장에서 보아도 자신과 매핑되는 한 명의 회원을 갖을 것이다. 즉, Member Entity와 Cart Entity는 일대일 매핑이다.
Member Enttiy 소스코드를 보면 Cart Enttiy와 관련된 코드는 없다는 걸 확인할 수 있다. 즉, Cart Enttiy가 @JoinColumn 어노테이션에서 member_id라는 외래키를 이용해 Member Enttiy를 일방적으로 참조하고 있다. Cart Entitiy와 Member Entity는 일대일로 매핑돼 있으며, Cart Entity는 Member Entity를 참조하는 일대일 단방향 매핑이다.
이렇게 매핑을 맺어주면 Cart Entity를 조회하면서 Member Entity의 정보도 동시에 가져올 수 있다는 장점이 생긴다.
Author And Source
이 문제에 관하여(JPA 연관 관계 매핑1_일대일 단방향 매핑하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dev_zzame/JPA-연관-관계-매핑1일대일-단방향-매핑하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)