티스토리 뷰

Java/JPA

JPA - @JoinColumn 과 @MappedBy 의 차이

컴파일몬스터 2024. 3. 25. 15:18

 

JPA 에서 두 객체는 단방향 혹은 양방향으로 방향성을 가질 수 있다.

하지만 이 객체들의 방향성은 데이터베이스 테이블들에 영향을 끼치지 않는다.

쉽게 말하면

객체는 방향성을 갖고 있으나, 데이터베이스 테이블끼리는 방향성을 가지지 않는다.

 

연관관계의 주인과 주인이 아닌 객체

  • 연관관계에서 외래키를 가지고 있으며 관리하는 쪽이 주인이 된다.
    • 대게 @ManyToOne 쪽이 주인이다.
  • 주인쪽에서 외래키의 관리를 하기때문에 주인이 아닌쪽은 읽기(참조)만 가능하다.

@JoinColumn

주인쪽에서 @JoinColumn 어노테이션을 이용해 사용자가 연관관계를 맺어 사용할 컬럼임을 명시한다.

@MappedBy

주인이 아닌쪽에서 @MappedBy 어노테이션을 이용해 주인쪽과 관계를 이어준다.

 

@Entity
public class Student {
	@Id
    @GeneratedValue
    private Long id;
    private String name;
    @JoinColumn(name = "student_id")
    @ManyToOne
    private Class class;
}

@Entity
public class Class {
	@Id
    @GeneratedValue
    private Long id;
    private String name;
    @OneToMany(mappedBy = "class")
    private List<Student> students;
}

 

 

해당 예제에서 Student 와 Class 가 있고

class 가 student list 를 가지고 있으며

student 는 class 객체를 가지고 있다고 했을때

주인은 student, 주인이 아닌쪽은 class 가 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함