一、@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/n/188497.html