Hibernate主键生成策略

在Hibernate中,提供了主键生成策略。下面是比较经常使用的几种:  1:assigned  ----表示在新增数据时由应用程序指定主键的值。主要针对主键是采用天然主键的形式。这种方式,适用于主键列不是自动增加列。  其缺点为在执行新增操做时,需查询数据库判断生成的主键是否已经存在。  2:increment  ----表示新增数据操做时由hibernate自动生成主键值。其生成的值为:先查询该主键列的最大值,而后在最大值的基础上加上1.适用于采用代理主键形式的主键列。一样不能用于主键列是自动增加的表。可是,该主键生成策略也有些缺点。  (1)新增数据前先查询一遍,影响了性能。  (2)主键的类型只能为数值型的int或者long  (3)并发操做时的冲突问题。  3:identity  ----不如说是为sqlerver数据库量身定作的。主要适用于sqlserver数据库的自动增加列的表。  4:native  ----表示根据不一样的数据库采用不一样的主键生成策略。好比,当前数据库为sqlserver,则会采用identity,如为oracle,则采用  oracle中的sequence等。区分数据库的不一样是以hibernate主配置文件中sessionFactory中配置的数据库方言。  5.uuid  * 惟一主键生成办法。从Hibernate中提取出来  优势:避免了生成ID 时,与数据库的再次交道,性能上较高。但对于有的开发人员不太习惯这种id生成方式,UUID生成的32为的字符串,不一样于identity 从1开始的整数。     Xml代码  1.<id name="实体类属性名" type="java.lang.Integer">    2.      <column name="对应表中主键字段名" />    3.      <generator class="assiged|increment|identity|native|........" />    4.</id>    <id name="实体类属性名" type="java.lang.Integer">        <column name="对应表中主键字段名" />        <generator class="assiged|increment|identity|native|........" />  </id>  采用hibernate的主键生成策略,就能够比较灵活和方便的对表中的主键字段进行操做了。并且,不一样的数据库,不一样的主键形式,也只须要修改下映射文件就能够了
相关文章
相关标签/搜索