知识大全 常用Hibernate主键生成策略

Posted 数据库

篇首语:夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 常用Hibernate主键生成策略相关的知识,希望对你有一定的参考价值。

常用Hibernate主键生成策略  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  今天学习到了关于Hibernate主键生成策略的问题 总结下 不足之处 请大家指出

  Hibernate为优秀的持久层框架的代表 在传统的JDBC+JavaBean操作中 实体对象都由程序员自己去封装 然后返回 而在Hibernate中 采用对象关系映射『ORM』 大大简化了对数据库的操作

  在数据库的设计和操作中 我们通常会给表建立主键 主键 可以分为自然主键和代理主键

  自然主键表示 采用具有业务逻辑含义的字段作为表的主键 比如在用户信息表中 采用用户的身份证号码作为主键 但是这样一来 随着业务逻辑的变化 主键就有可能要更改 比如 假设哪天身份证号码升级成 位 那

  代理主键 在表中人为的增加一个字段 该字段并没有表示任何的业务逻辑 仅仅用来标识一行数据 比如说在用户信息表中 增加一个用户ID的字段 用来表示该条用户信息的记录

  通常情况下 用的比较多的是代理主键的形式 而且 我们习惯于于让该主键字段能够自动增长 来保证其唯一性 但是 不同的数据库自动增长的方式并不是相同的 如在SQLSERVER中 用identity MYSQL中 有increment ORACLE中通常采用sequence 这样一来 在数据库的主键列操作上 便会显得比较麻烦

  但是在Hibernate中 提供了Hibernate主键生成策略 下面是比较常用的几种

   assigned

  表示在新增数据时由应用程序指定主键的值 主要针对主键是采用自然主键的形式 这种方式 适用于主键列不是自动增长列

  其缺点为在执行新增操作时 需查询数据库判断生成的主键是否已经存在

   increment

  表示新增数据操作时由hibernate自动生成主键值 其生成的值为 先查询该主键列的最大值 然后在最大值的基础上加上 适用于采用代理主键形式的主键列 同样不能用于主键列是自动增长的表 但是 该主键生成策略也有些缺点

  ( )新增数据前先查询一遍 影响了性能

  ( )主键的类型只能为数值型的int或者long

  ( )并发操作时的冲突问题

   identity

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

   native

  表示根据不同的数据库采用不同的Hibernate主键生成策略 比如 当前数据库为sqlserver 则会采用identity 如为oracle 则采用

  oracle中的sequence等 区分数据库的不同是以hibernate主配置文件中sessionFactory中配置的数据库方言

  Xml代码

  <id name= 实体类属性名  type= java lang Integer >

  <column name= 对应表中主键字段名  />

  <generator class= assiged|increment|identity|native|  />

  </id>

  采用hibernate主键生成策略 就可以比较灵活和方便的对表中的主键字段进行操作了 而且 不同的数据库 不同的主键形式 也只需要修改下映射文件就可以了

cha138/Article/program/Java/ky/201311/28054

相关参考

知识大全 hibernate中自定义主键生成器

  Hibernate(目前使用的版本是)中提供了多种生成主键的方式  然而当前的这么多种生成方式未必能满足我们的要求  比如increment可以在一个hibernate实例的应用上很方便的时候但是

知识大全 hibernate中自定义主键生成器[1]

  Hibernate(目前使用的版本是)中提供了多种生成主键的方式  然而当前的这么多种生成方式未必能满足我们的要求  比如increment可以在一个hibernate实例的应用上很方便的时候但是

知识大全 Hibernate主键生成方式 Key Generator

Hibernate主键生成方式KeyGenerator  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 hibernate中自定义主键生成器[2]

publicvoidconfigure(TypetypePropertiesparamsDialectd)throwsMappingExceptionStringtable=paramsgetProp

知识大全 Hibernate的ID生成策略是什么

Hibernate的ID生成策略是什么?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishix

知识大全 Hibernate复合主键查询

Hibernate复合主键查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernate

知识大全 Hibernate复合主键映射

Hibernate复合主键映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Hibernate中配置复合主键映射

Hibernate中配置复合主键映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  通常将复合主

知识大全 Hibernate一对一 主键关联映射

Hibernate一对一主键关联映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 Hibernate(jpa)复合主键annotation声明方法

Hibernate(jpa)复合主键annotation声明方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起