Spring 27. 1:N

김창민·2024년 8월 20일

BE

목록 보기
48/50

@OneToMany어노테이션은 1:N 관계를 맺어준다.

단방향

1:N 관계에선 N 입장의 Entity가 외래 키의 주인이 된다고 했었다.
실제로 N:1 관계에선 그렇게 진행했다.

하지만 다음 경우는 1의 Entity가 외래 키의 주인이 되는 상황이다.
이 상황에선 N의 Entity가 외래 키 컬럼을 만들어 추가하고 관리는 1의 Entity가 한다.

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

    @OneToMany
    @JoinColumn(name = "food_id") // users 테이블에 food_id 컬럼
    private List<User> userList = new ArrayList<>();
}
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
}

양방향

위와 같은 1:N 관계에선 양방향 관계가 존재하지 않는다.
억지로 한다면

@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

	@ManyToOne
	@JoinColumn(name = "food_id", insertable = false, updatable = false)
	private Food food;
}

를 통해 join으로 흉내는 가능하다.

profile
일일 회고 : https://rlackdals981010.github.io/

0개의 댓글