일대다(OneToMany)는 JPA(Java Persistence API)에서 제공하는 관계 매핑 어노테이션 중 하나입니다. 이 어노테이션을 사용하면 하나의 엔티티가 다른 엔티티들과 일대다 관계를 가질 수 있습니다.
어노테이션 사용법
다음은 일대다 관계를 매핑하기 위해 사용되는 @OneToMany 어노테이션의 기본 사용법입니다.
@Entity
public class Parent {
@OneToMany(mappedBy = "parent")
private List<Child> children;
// ...
}
위 코드에서 @OneToMany 어노테이션은 Parent 엔티티와 Child 엔티티 간의 일대다 관계를 매핑합니다. mappedBy 속성은 Child 엔티티에 선언되어 있는 Parent 필드의 이름을 지정합니다.
일대다 관계의 특징
- 하나의 Parent 엔티티는 여러 개의 Child 엔티티와 관계를 가질 수 있습니다.
- 하나의 Child 엔티티는 하나의 Parent 엔티티와만 관계를 가질 수 있습니다.
- Child 엔티티가 Parent 엔티티의 ID를 참조하게 됩니다.
일대다 관계의 문제점
- 일대다 관계에서는 외래 키(Foreign Key)를 어디에서 관리해야 하는지에 대한 문제가 발생합니다. 이 문제를 해결하기 위해 대부분의 ORM(Object-Relational Mapping) 프레임워크에서는 외래 키를 자동으로 생성해주는 기능을 제공합니다.
- 일대다 관계에서는 데이터의 일관성이 깨질 가능성이 있습니다. 예를 들어, Parent 엔티티를 삭제할 때 해당 Parent와 연관된 모든 Child 엔티티를 삭제해주지 않으면 Child 엔티티의 외래 키가 NULL이 되어버리는 문제가 발생합니다.