JPA - Entity 매핑 (2)
- N:1
@ManyToOne
- 1:N
@OneToMany
- 1:1
@OneToOne
- N:M
@ManyToMany
01. 1:N 관계
SpringBoot 에서 1:N 관계를 어떻게 정의하는지 살펴보자. Django 에서 related_name 역참조만 주면 알아서 되는데 스프링은 참 불편하다..
- User (N)
- Team (1)
Spring
@Entity
class User {
@Id
@GeneratedValue(value = "GenerateType.Strategy")
private Long id;
@Column(name = "USERNAME")
private String username;
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
}
@Entity
class Team {
@Id
@GeneratedValue(value = "GenerateType.Strategy")
private Long id;
@Column(name = "NAME")
private String name;
@OneToMany(mappedBy = "team")
private List<Team> teams = new ArrayList<Team>();
}
Django Django 에서는 그냥 N 쪽에 FK 필드주고 related_name 걸면 정참조/역참조 이름이 바로 걸어진다. 개인적으로 Spring 보다 설정이 매우… 간편한것 같음..
class User(models.Model):
username = models.CharField(max_length=50)
team = models.ForeignKey("Team", on_delete=models.CASCADE, related_name="users")
class Team(models.Model):
name = models.CharField(max_length=50)
댓글남기기