2. JPA实体

JPA实体类

其实就是一个简单的Java实体类,只是在属性上多了几条注解。
下面列出一些常用的注解:

@Entity

标注在类上方,表示该类为被JPA管理的实体类,将被映射到指定的数据库表。

@Table

标注在类上方,表名该类对应的数据库表,可增加(name=“xxx”)属性表示具体对应的表名。

@Id

可配合@GeneratedValue(strategy=GenerationType.xxx)
设置主键自增类型,自增注解strategy属性提供四种值(即xxx可选值):

AUTO: 主键由程序控制,是默认选项,不设置即此项。
IDENTITY:主键由数据库自动生成,即采用数据库ID自增长的方式,Oracle不支持这种方式。
SEQUENCE:通过数据库的序列产生主键,通过@SequenceGenerator 注解指定序列名,mysql不支持这种方式。
TABLE:通过特定的数据库表产生主键,使用该策略可以使应用更易于数据库移植。

@IdClass
@Basic
@Transient

不将此字段映射到数据库

@Column

注解在属性上,对应数据库中表的列,有以下一些配置属性可选

String name:默认与实体中属性名一样,可通过(name=xxx)自定义;
boolean unique:是否唯一默认false;
boolean nullable:是否可为空;默认true;
boolean insertable:在insert时是否包含此字段,默认true;
boolean updateable:在update时是否包含此字段,默认true;
String columnDefinition:在数据库中的实际类型;
int length:长度,默认255;

@Temporal

设置Date类型的属性对应的字段

一个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
@Entiy
@Table("person")
public void Person(){
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

@Column(name="username",unique=true,nullable=false,length=16)
private String username;

@Column
private String realname;
}