프로그래밍/Spring

[JPA] 외래키 사용

I'm_ 2024. 2. 4. 11:28

✅ 들어가며

JPA에서는 클래스에 필드로 클래스를 선언함으로써 연관관계를 매핑할 수 있다.

이번 프로젝트에서 아래와 같이 외래키를 연결하고 싶어 우선 N:1 단방향 연관관계를 매핑하는 방법에 대해 공부해보았다.

목표 ERD

 

✅ N:1 연관 관계 매핑

객체지향 프로그램에서의 객체와 RDB에서의 테이블이 서로 연관관계를 맺는 방법이 다르다. 이 둘의 차이를 채우기 위해 매핑과정이 필요하고 이를 JPA가 수행하게 된다.

 

N:1 연관관계는 간단히 @ManyToOne, @JoinColumn 어노테이션을 이용하면 된다.

public class Food {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column
    private long foodId;

    @Column(nullable = false, length = 50)
    private String foodName;

    @Column(nullable = false)
    private int price;

    @Column(nullable = false)
    private String foodDescription;

    @ManyToOne //N:1관계 매핑
    @JoinColumn //외래키 정의
    Restaurant restaurant;

 

DB에 저장
POSTMAN으로 GET 테스트

 

✅ 나가며

왜인지는 모르겠으나 동일한 코드로 테스트를 했음에도 불구하고 이틀간 테스트에서 restaurantId의 값이 저장되지 않았었다.

동일한 코드로 테스트를 진행했을 때 성공한 것을 봤을 때 데이터를 전송형식에 문제가 있었던 것 같다. 

일단 단방향 매핑은 성공했으니 다음 도메인에서는 양방향 매핑을 시도할 것이다.


📚 참고자료