`
zhuzhiguosnail
  • 浏览: 107812 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库持久层开发之Hibernate主键

阅读更多
1,Assigned,主键的生成值完全由用户决定,与底层的数据库无关。用户需要维护主键值。要在调用session.save()前指定主键值。

2,Hilo,它其实是通过一种叫做hi/lo的算法来实现的主键生成机制。这种算法通常叫做高第位算法,Hi代表一个高位值,lo代表一个低位值,然后吧算法得到的两个值拼接起来作为数据库中的唯一主键。但这种方式需要额外的数据库表和字段,提高高位值来源。默认情况下这个表叫做hibernate_unique_key,默认字段叫做next_hi。并且必须保证next_hi字段有且只有一条记录。这种方式能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性。它与底层数据库无关。

3,Seqhilo,使用方法与Hilo方式类似,但要求底层数据库支持Sequence,入Oracle,DB2等。

4,Increment,它由Hibernate本身维护,适用于所有的数据库。但是它不适合多进程并发更新数据库,适合单一进程访问数据库,不能用于群集环境。

5,Identity,与底层数据库有关,要求数据库支持Identity,入MySQL中是auto_increment,SQLServer中是Identity。支持的数据库有MySQL,SQLServer,DB2,Sybase和HypersoncSQL。无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。

6,Sequence,需要底层数据库支持序列,支持序列的数据库有DB2,Oracle,PostgreSQL,SAPDB等。在不同的数据库之间移植程序,特别从支持序列的数据库移植到不支持序列的数据库时需要修改配置文件。

7,Native,根据不同的底层数据库,采用不同的主键生成方式。入MySQL使用Identity方式,Oracle使用Sequence方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植。项目中如果用到多个数据库时,可以使用Native方式。

8,UUID,能够保证数据库中主键的唯一性。生成的主键值占用比较多的存储空间。

9,Foreign,适合一对一关联关系中。

10,GUID,主键生成方式使用一种特殊的算法,保证主键的唯一性,支持SQLServer和MySQL。在使用SQLServer时,表定义中需要将字段的类型指定为“uniqueidentifier”。

以上就是Hibernate的十种主键生成方式,各有其特点,具体的采用那种方式还是的根据实际的应用,合理采用。
分享到:
评论

相关推荐

    精通hibernate:对象持久化技术孙卫琴第二版part2

    Hibernate位于持久化层,是域模型和关系数据模型之间的桥梁。 1.1 应用程序的分层体系结构 1 1.1.1 区分物理层和逻辑层 2 1.1.2 软件层的特征 3 1.1.3 软件分层的优点 4 1.1.4 软件分层的缺点 4 1.1.5 Java...

    彻底解决hibernate常见难点.zip

    N关系时保存技巧、Hibernate缓存机制、Hibernate批量处理数据、Hibernate三种继承映射策略、hibernate映射体系、Hibernate主键生成策略、持久层DAO设计建议、基于xml文件的bean、使用HibernateAPI在Spring中、事务...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    Hibernate3.1_学习源码

    04 04Hibernate_Composite : 复合主键的使用,在开发中很少用到,一般良好的设计都会为一个表添加一个自动增长的主键标识列。其中重点配置方法和Hibernate中普遍采用的方法链编程的使用。还需注意可以将组合主键构建...

    Hibernate实战(第2版 中文高清版)

     1.3 持久层和其他层 显示全部信息第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象...

    第24次课-1 Spring与Hibernate的整合

    不再强制开发者在持久层捕捉异常,持久层异常被包装成DataAccessException,底层数据库异常包装成业务异常。开发者可以自己决定在合适的层处理。 HibernateTemplate支持类。可以完成大量Hibernate持久层的操作。 ...

    精通Hibernate:对象持久化技术第二版part3

    Hibernate位于持久化层,是域模型和关系数据模型之间的桥梁。 1.1 应用程序的分层体系结构 1 1.1.1 区分物理层和逻辑层 2 1.1.2 软件层的特征 3 1.1.3 软件分层的优点 4 1.1.4 软件分层的缺点 4 1.1.5 Java...

    Hibernate Annotations 中文文档

    Hibernate Annotations API 中文文档 前言 1. 创建一个注解项目 1.1. 系统需求 1.2. 系统配置 2. 实体Bean 2.1. 简介 2.2. 用EJB3注解进行映射 2.2.1. 声明实体bean 2.2.1.1. 定义表(Table) 2.2.1.2. 乐观...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    hibernate annotation 中文文档

    4.2.1. 数据库schema层次验证 4.2.2. Hibernate基于事件的验证 4.2.3. 程序级验证 4.2.4. 验证信息 5. Hibernate与Lucene集成 5.1. 使用Lucene为实体建立索引 5.1.1. 注解领域模型 5.1.2. 启用自动索引 A. 术语表

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    Hibernate中文API大全

    依赖对象(Dependent objects) 组件(Component)是一个被包含的...比如,OrderLine类具有一个主键,这个主键依赖于Order的(联合)主键。 insert="false" update="false"> .... </class>

    低清版 大型门户网站是这样炼成的.pdf

    11.4.3 持久层hibernate 3实现 728 11.4.4 spring 2接管业务逻辑层 730 11.5 小结 733 第12章 站务必备—系统用户管理与流量统计 735 12.1 系统用户管理与流量统计需求分析 735 12.2 系统用户管理与流量统计...

    Spring3.x企业应用开发实战(完整版) part1

    17.4 持久层开发 17.4.1 PO类 17.4.2 DAO基类 17.4.3 通过扩展基类所定义DAO类 17.4.4 DAO Bean的装配 17.4.5 使用Hibernate二级缓存 17.5 对持久层进行测试 17.5.1 配置Unitils测试环境 17.5.2 准备测试数据库及...

    Spring.3.x企业应用开发实战(完整版).part2

    17.4 持久层开发 17.4.1 PO类 17.4.2 DAO基类 17.4.3 通过扩展基类所定义DAO类 17.4.4 DAO Bean的装配 17.4.5 使用Hibernate二级缓存 17.5 对持久层进行测试 17.5.1 配置Unitils测试环境 17.5.2 准备测试数据库及...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. ...

    ssh(structs,spring,hibernate)框架中的上传下载

     本文后面的章节将从数据持久层->业务层->Web层的开发顺序,逐层讲解文件上传下载的开发过程。  数据持久层  1、领域对象及映射文件  您可以使用Hibernate Middlegen、HIbernate Tools、Hibernate ...

Global site tag (gtag.js) - Google Analytics