Entity 연관관계 매핑

inzZoo·2022년 10월 25일
0

졸업프로젝트공부

목록 보기
1/3

졸업프로젝트를 진행하면서 공부한 내용 정리!



🛸 JPA를 이용한 엔티티 연관 관계 매핑

🚦 다대일 단방향 관계 (M:1)

Student라는 이름의 entity와 Club이라는 이름의 entity를 매핑한다고 가정한다. Student entity는 한 학생의 개인정보를 담은 entity이고 Club엔티티는 동아리 정보를 담은 entity라고 한다. 각 entity는 다음과 같은 칼럼을 가진다고 한다.

Student Entity :

학생id, 이름, 나이, 가입한 클럽id

Club Entity :

클럽id, 클럽 이름

학생은 단 하나의 클럽만 가입이 가능하다면 학생과 클럽의 관계는 M:1이다.



그럼 jpa를 이용해 두 entity를 어떻게 매핑할까?

@Entity
public class Student {

    @Id
    @GeneratedValue
    private Long id;

    private String studentName;

	private String studentName;

    @ManyToOne
    @JoinColumn(name="clubId")
    private Club club;
}
@Entity
public class Club {

    @Id
    @GeneratedValue
    private Long id;

    private String clubName;
}

위의 코드를 보면 Student entity에 @ManyToOne@JoinColumn 어노테이션으로 외래키를 생성한 것을 볼 수 있다.

@ManyToOne : n:1을 나타내는 어노테이션, n인 엔티티에 붙인다.

@JoinColumn : 외래키를 정의하는 어노테이션

🚦 일대일 단방향 관계 (1:1)

일대일 관계는 양쪽이 서로 하나의 관계만 가지는 관계로 외래키가 어디에 있든 상관이 없다.
예를 들어, Student라는 entity와 각 학생의 시간표를 나타내는 TimeTable entity는 다음과 같이 매핑할 수 있다.

Student Entity :

학생id, 이름, 나이, 본인 시간표id

TimeTable Entity :

시간표id, 1교시, 2교시, 3교시, 4교시

@Entity
public class Student {

    @Id
    @GeneratedValue
    private Long id;

    private String studentName;

	private String studentName;

    @OneToOne
    @JoinColumn(name="timeTable")
    private TimeTable timeTable;
}
@Entity
public class TimeTable {

    @Id
    @GeneratedValue
    private Long id;

    private String time1;
    private String time2;
    private String time3;
    private String time4;
}





참고자료

[JPA] 3. 엔티티 연관 관계 매핑 정리/예제
[JPA] 연관관계 매핑 알아보기 (@ManyToOne, @OneToMany, @OneToOne, @ManyToMany)

profile
달리는 두치~뿌꾸뿌꾸 빵빵

0개의 댓글