Hibernate主键生成策略备注

ID生成策略(Hibernate3)

 

通常情况下,用的比较多的是代理主键的形式。而且,我们习惯于于让该主键字段能够自动增长,来保证其唯一性。但是,不同的数据库自动增长的方式并不是相同的。如在SQLSERVER中,用identity;MYSQL中,用increment,ORACLE中通常采用sequence。

 

这样一来,在数据库的主键列操作上,便会显得比较麻烦。但是在Hibernate中,提供了主键生成策略。下面是比较常用的几种:

1、identity

不如说是为sqlerver数据库量身定做的。主要适用于sqlserver数据库的自动增长列的表。

 

2、native

----表示根据不同的数据库采用不同的主键生成策略。比如,当前数据库为sqlserver,则会采用identity,如为oracle,则采用oracle中的sequence等。区分数据库的不同是以hibernate主配置文件中sessionFactory中配置的数据库方言。

 

3.uuid

UUID生成的32为的字符串,不同于identity 从1开始的整数。 

 

 

Xml代码

<idname="实体类属性名"type="java.lang.Integer">

<columnname="对应表中主键字段名"/>

<generatorclass="assiged|increment|identity|native|........" />

</id>

 

xml生成id,一般用<generator class=” native”>

 

annotation生成ID,只需在get方法上加@GeneratedValue注释。

默认为auto

对MySQL,使用auto_increment

对Oracle,使用hibernate_sequence

你可能感兴趣的:(Hibernate主键生成策略备注)