일대다

일대다 단방향 구현

팀에서 회원을 참조해야 하고 회원에서 팀을 참조할 필요가 없다면 일대다 단방향 연관 관계로 구현할 수 있다.

팀 엔티티

@Entity
class Team(

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "TEAM_ID")
    val id: Long = 0L,

    val name: String,
   
    @OneToMany
    @JoinColumn(name = "TEAM_ID") // MEMBER 테이블의 TEAM_ID(FK)
    val members: List<Member>
)

@JoinColumn을 명시하지 않으면 JPA는 연결 테이블을 중간에 두고 연관관계를 관리하는 전략을 사용한다.

회원 엔티티

@Entity
class Member(

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "MEMBER_ID")
    val id: Long = 0L,

    val username: String,
)

일대다 단방향 매핑의 단점

일대다 양방향

일대다 양방향과 대다일 양방향은 같은 말이다.