@Entity @Table(name = "admin", catalog = "elearning") public class Admin implements java.io.Serializable { } |
javax.persistence.Entity 指定类是一个实体。此注释应用于实体类。
@Entity POJO用@Entity进行实体注释
javax.persistence.Table此注释为注释的实体指定主表格。使用 SecondaryTable 或 SecondaryTables 注释可以指定其他表格。
@Table 是类的一级注释,通过它可用为实体指定表(Table),目录(catalog),和结构(schema)的名字,如果没有@Table,那么系统自动使用默认值:实体的短类名(不带包名)
注:catalog相当于是一个编目,就是把远程服务器上的数据库实例映射到本地,从而建立本地客户端与远陈服务器端的链接,所以一个编目节点就映射一个远程服务器上数据库的实例,这个节点包含了对该数据库实例的元数据(包括基本表,索引,用户等),每一个数据库实例的catalog名字就是该数据库映射到本地客户端时保存的别名,对sqlserver来说就是数据库名
@Column(name = "user_name", nullable = false, length = 50) public String getUserName() { return this.userName; } |
实体Bean中的所有非static、非transient的属性都可以被持久化。同时使用@Transient对属性进行注解同样不不会被持久化
javax.persistence.Column用于指定持久属性或字段的映射列。如果没有指定 Column 注释,则应用默认值。
@Column:表示持久化属性所映射表中的字段,如果属性名与表中的字段名相同,则可以省略@Column注解。
当POJO用有属性不需要映射的时候一定要用@Transient修饰
@Id |
javax.persistence.Id指定实体的主键属性或字段。
@Id 使用@Id注解可以将实体Bean中的某个属性定为为标识符(identifier)。
主键生成策略
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE) public Long getId() { return id; } |
@GeneratedValue(strategy=策略)
GenerationType.AUTO 主键由程序控制。如果不指定主键生成策略,默认为AUTO。
GenerationType.TABLE 使用一个特定的数据库表格来保存主键。
GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。Oralce
GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长型)MySQL
自定义主键生成策略
org.hibernate.annotations.GenericGeneracor hibernate在JPA的基础上进行了扩展,可以用一下方式引入hibernate独有的主键生成策略
@Id @GeneratedValue(generator = "system-uuid")[该属性名为下面注释中name的值] @GenericGenerator(name = " system-uuid ", strategy = "uuid") public Long getId() { return id; } |