Entity関連
- @ OneToMany
- @ ManyToOne
この辺りが混乱したし、うまくいかないことが多々あった。
OneToManyとは
Entityの1対多の関係のこと。
例)一人のユーザーが、何かを5件予約したとする。
DB上では、userテーブルとshceduleテーブルに分かれているものとして、
1ユーザーに対して、5件の予約が入っている。
この状態が1対多の関係である。
userテーブルのPKとscheduleテーブルのFKをくっつける感じ。
実際使ってみると、いちいちSQL発行しなくて済むので、ラクだと感じた。
User.java
@Entity
@Table(name="member")
@Data
@NoArgsConstructor
@AllArgsConstructor
@NotNull
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; ←これがPK(Primary Key)
.............
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER,orphanRemoval=true)
@JoinColumn(name="user_id")
@OrderBy("date")
private List<Schedule> scheduleList;
}
ManyToOneとは
OneToManyの逆ですね。。。
上の例で言えば、予約1件1件に対して、誰が予約しているのかという情報を持つことになる。
Schedule.java
@Entity
@Table(name="schedule")
@Data
@NoArgsConstructor
@AllArgsConstructor
@NotNull
public class Schedule implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name="user_id")
private int userId; ←これがFK(Foreign Key)
private String date;
private String time;
............
@ManyToOne
@JoinColumn(name="user_id",nullable = false,insertable=false, updatable=false)
private User user;
}
まとめ
今後もっと詳しく書いていこうと思うが、一旦はこんな感じで。