[JPA] 다대일 관계

지인·2023년 6월 26일
0

Spring

목록 보기
11/20
post-custom-banner

🐰 N 대 1 관계 - @ManyToOne

🐾 반대에서 단방향 매핑을 한다고 해서 DB 테이블에 영향을 전혀 주지 않는다.

🐾 다대일관계의 다 쪽에서 이미 연관관계의 주인이 되어서 외래키를 관리하고 있다.

  • N 대 1 관계를 맺어주는 역할

  • 음식 Entity와 고객 Entity가 N 대 1 관계라 가정하여 관계를 설명하려고 한다.


👉🏻 단방향 관계

음식 Entity가 N의 관계로 외래 키의 주인

  • 음식
@Entity
@Table(name = "food")
public class Food {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;
}
  • 고객
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
}


👉🏻 양방향 관계

양방향 참조를 위해 고객 Entity에서 Java 컬렌션을 사용하여 음식 Entity 참조

  • 음식
@Entity
@Table(name = "food")
public class Food {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;
}
  • 고객
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

    @OneToMany(mappedBy = "user")
    private List<Food> foodList = new ArrayList<>();
}

profile
열쩡
post-custom-banner

0개의 댓글