hibernate主键生成策略1

 标识符属性的生成策略

Hibernate映射文件(*.hbm.xml)中的<id>元素定义持久化类的标识符属性名、类型和与数据库表中字段的映射,其<generator>子元素则用来设置当前持久化类的标识符属性的生成策略。一个持久化对象对应数据库表中的一条记录,为了更好地持久化表中的每一条记录,需要通过<generator>元素的class属性设置采用的标识符属性生成策略,如下面的代码所示:

 
  1. <id name="id" type="java.lang.Integer" column="ID">  
  2.     <generator class="increment">  
  3.     </generator>  
  4. </id> 

<param>元素是<generator>元素的可选子元素,用来传递标识符属性生成时可能需要的一个或多个参数。

在Hibernate中内置了多种标识符属性生成策略,如果不能满足需要,还可以通过实现org.hibernate.id.IdentifierGenerator接口来定制标识符属性生成策略。

3.3.1  increment生成策略

当Hibernate准备在数据库表中插入一条新记录时,首先从数据库表中获取当前主键字段的最大值,然后在最大值基础上加1,作为当前持久化对象的标识符属性值。这种策略即increment生成策略,用其生成的标识符属性的类型可以是long、short、int及其封装类的类型。

这种主键生成策略适合单服务器的Hibernate应用,同时数据库也只被这个Hibernate应用所独享;否则不能保证生成的标识符属性值的唯一性,即这种标识符属性生成策略并不适合非独享数据库或者分布式的Hibernate应用。

使用这种标识符属性生成策略的示例配置信息如下:

 
  1. <id name="id" type="java.lang.Integer" column="ID">  
  2.     <generator class="increment">  
  3.     </generator>  
  4. </id>    

identity生成策略

在MS SQL Server、MySQL和DB2等数据库中可以设置表中某一个字段的数值自动增长,identity生成策略通过这种方式为当前记录获取主键值的同时为持久化对象赋予标识符属性值。

该生成策略生成的标识符属性的类型可以是long、short、int及其封装类的类型。

使用这种标识符属性生成策略的示例配置信息如下:

 
  1. <id name="id" type="java.lang.Integer" column="ID">  
  2.     <generator class="identity">  
  3.     </generator>  
  4. </id>    

你可能感兴趣的:(应用服务器,Hibernate,mysql,SQL Server,db2)