你的位置:首页 > Java教程

[Java教程]Hibernate的几种主键生成策略


主键类型:
  业务主键(natural key):业务主键的值是来源于一个业务数据。
  代理主键(surrogate key):代理主键需要采用一种方式来生成某个唯一值。

代理主键的生成策略:
  1、hibernate的主键生成策略只能用于代理主键
  2、不同的主键生成策略需要的内容也是不同。

Hibernate的主键生成策略:

  1、assigned:由应用程序负责生成主键标识符,通常使用在数据库中没有代理主键,使用的主键与业务相关的情况,即使用的是业务主键。这种主键的生成方式不建议使用,在数据库表设计时就应该使用代理主键,不应使用业务主键。在没有指定标签时,默认就是assigned主键的生成方式。  在插入数据的时候主键由用户自己生成,Hibernate不负责生成主键。

<id name="userid" type="java.lang.Long">  <column name="USERID" precision="22" scale="0" />  <generator class="assigned" /></id>

  2、identity:适用于MySQL、DB2、MS SQL Server,采用数据库生成的主键,用于为long、short、int类型生成唯一标识 
使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段。