티스토리 뷰
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 가 된다.
'Java > JPA' 카테고리의 다른 글
setter 의 지양은 어디까지 인가 (필드 값 업데이트시 좋은 방법?) (0) | 2025.02.05 |
---|