一、@Entity
@Entity是所有JPA註解中最重要的一個,表示這個類是一個JPA實體類。
在一個使用JPA的項目中,所有的實體類都需要加上@Entity註解,這個註解告訴JPA實現這個類需要被持久化。
默認情況下,實體類的類名就是表名;如果需要修改表名,可以使用@Table註解指定表名。
@Entity
@Table(name = "user")
public class User {
……
}
二、@Id
@Id註解表示這個屬性是主鍵。
如果主鍵是單一屬性,可以把@Id標註在屬性上。但是,如果主鍵是一個複合的屬性,就需要單獨創建一個主鍵類,並在實體類上使用@IdClass註解指向它。
@Entity
public class User {
@Id
private Long id;
……
}
@Entity
@IdClass(UserPK.class)
public class User {
@Id
private String name;
@Id
private int age;
……
}
public class UserPK implements Serializable {
private String name;
private int age;
……
}
三、@GeneratedValue
@GeneratedValue註解表示主鍵的生成策略。
JPA提供了多種生成策略,常用的有IDENTITY、TABLE和SEQUENCE。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
四、@Column
@Column註解表示實體屬性對應的表字段。
如果實體屬性名稱與表字段名稱一致,@Column可以省略。
@Column(name = "user_name")
private String username;
五、@Temporal
@Temporal註解表示日期類型的屬性。
如果是DATE或TIME類型的屬性,需要指定日期的精度;如果是TIMESTAMP類型的屬性,可以省略。
@Column
@Temporal(TemporalType.DATE)
private Date birthdate;
@Column
@Temporal(TemporalType.TIME)
private Date birthtime;
@Column
@Temporal(TemporalType.TIMESTAMP)
private Date regtime;
六、@OneToMany/@ManyToOne
@OneToMany註解表示一對多的關係。
在關係的擁有方,需要使用@JoinColumn指定外鍵。
@ManyToOne註解與@OneToMany相對應,表示多對一的關係,同樣需要使用@JoinColumn指定外鍵。
@Entity
public class Department {
@Id
private Long id;
@OneToMany(mappedBy = "department")
private List employees;
……
}
@Entity
public class Employee {
@Id
private Long id;
@ManyToOne
@JoinColumn(name = "department_id")
private Department department;
……
}
七、@ManyToMany
@ManyToMany註解表示多對多的關係。
需要創建一個中間表來存儲關係,也可以使用@JoinTable指定中間表的表名和字段名。
@Entity
public class Student {
@ManyToMany
@JoinTable(name = "student_course",
joinColumns = @JoinColumn(name = "student_id"),
inverseJoinColumns = @JoinColumn(name = "course_id"))
private List courses;
……
}
@Entity
public class Course {
@ManyToMany(mappedBy = "courses")
private List students;
……
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/188497.html