开篇广告
自己开发的淘宝领券网站:q.hayye.cn(手机打开)
要说特色,应该没有,硬要说的话就是没广告、没推送,简单好用。
前端开源地址:https://gitee.com/hayye/tbq
后端不开源……
欢迎大家加群讨论技术,不定时也会有淘宝神券发放!
正文开始
JPA实体类
其实就是一个简单的Java实体类,只是在属性上多了几条注解。
下面列出一些常用的注解:
@Entity
标注在类上方,表示该类为被JPA管理的实体类,将被映射到指定的数据库表。
@Table
标注在类上方,表名该类对应的数据库表,可增加(name=“xxx”)属性表示具体对应的表名。
@Id
可配合@GeneratedValue(strategy=GenerationType.xxx)
设置主键自增类型,自增注解strategy属性提供四种值(即xxx可选值):
AUTO: 主键由程序控制,是默认选项,不设置即此项。
IDENTITY:主键由数据库自动生成,即采用数据库ID自增长的方式,Oracle不支持这种方式。
SEQUENCE:通过数据库的序列产生主键,通过@SequenceGenerator 注解指定序列名,mysql不支持这种方式。
TABLE:通过特定的数据库表产生主键,使用该策略可以使应用更易于数据库移植。
@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类型的属性对应的字段
一个例子
@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;
}