jpa中的id生成策略总结

jpa中主要有以下几种id生成策略 (这里以MySql数据库为例,因此不包括sequence策略):

 

1、普通的自增长id生成策略:

 

@GeneratedValue 不指定参数,该id生成策略类似于hibernate中的native策略,有数据库自身决定id值。

 

2、table生成策略:

 

在数据库中专门生成一张表来记录某张表下一条记录的id,该表的结构大概是下面这样:

 

COLUMN_NAME  NEXT_ID

------------------------------------------------

    Person 2

    User 2

    ...

 

其中Person和User都是对于某张表的标识。具体配置如下所示:

 

 

@Id
	@TableGenerator(
			name="person_table_id_gen",     //策略生成器的名称
			table="t_id_gen",			     //记录id的表名称
			pkColumnName="ID_COLUMN_NAME",   //用于存储指定表的标识,例如Person表,User表等
			valueColumnName="NEXT_ID",    //存储下一条记录的id
			pkColumnValue="Person",
			allocationSize=1                           //id增长的步进值
	)
	@GeneratedValue(generator="person_table_id_gen" , strategy=GenerationType.TABLE)

 

另外,还有一种id生成策略,但是这个生成策略与服务器有关,由于JBOSS关于jpa的底层实现是使用hibernate,所以,

 

在JBOSS中可以使用该种生成策略,但是在别的应用服务器中不能使用。

 

uuid生成策略:

 

 

@Id
@GenericGenerator(name="myuuid" , strategy="uuid")
@GeneratedValue(generator="myuuid")

 

这种策略只能在JBOSS服务器中使用。如果使用这种策略的话,id必须声明为String类型。

你可能感兴趣的:(jpa)