프로젝트 git url | github.com/rtef23/JpaStudy |
필요 | 1. docker 2. docker-compose |
프로젝트 정보 | mysql : 5.7 - docker image java : 1.8 |
다대일(N : 1), '다'가 연관관계의 주인의 경우
- @ManyToOne
- optional ; false로 설정하면 연관된 엔티티가 항상 있어야 한다.
- fetch ; 글로벌 페치 정략을 설정한다.
- cascade ; 영속성 전이 기능을 사용한다.
- targetEntity ; 연관된 엔티티의 타입 정보를 설정한다.
- @ManyToOne에는 mappedBy가 없지만 @OneToMany에는 mappedBy가 있다.
- > ManyToOne 어노테이션을 사용한 곳은 연관관계의 주인이 된다.
- Member, Team의 관계는 다대일(N : 1) 관계이다.(Team 입장에서는 일대다(1 : N)의 관계)
@Entity
@Table(name = "USER")
public class User {
@Id
@GeneratedValue
@Column(name = "user_id")
private Long id;
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
@Column(name = "username")
private String username;
...
}
@Entity
@Table(name = "TEAM")
public class Team {
@Id
@GeneratedValue
@Column(name = "team_id")
private Long id;
@Column(name = "name")
private String name;
...
}
- Team과 User의 연관관계의 주인이 User의 경우 양방향 연관관계의 코드
@Entity
@Table(name = "USER")
public class User {
@Id
@GeneratedValue
@Column(name = "user_id")
private Long id;
@Column(name = "username")
private String username;
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
...
}
@Entity
@Table(name = "TEAM")
public class Team {
@Id
@GeneratedValue
@Column(name = "team_id")
private Long id;
@Column(name = "name")
private String name;
@OneToMany(mappedBy = "team")
private List<User> users = new ArrayList<>();
...
}
'JPA' 카테고리의 다른 글
[JPA] 10. 연관관계 매핑 - 일대일(1 : 1) (0) | 2021.01.11 |
---|---|
[JPA] 9. 연관관계 매핑 - 일대다(1 : N) (0) | 2021.01.11 |
[JPA] 7. 연관관계 (0) | 2021.01.06 |
[JPA] 6. 엔티티 매핑 (0) | 2021.01.05 |
[JPA] 5. 영속성 컨텍스트 - 2 (0) | 2020.12.31 |