数据库持久层开发之Hibernate主键
来源:互联网 发布:阿里云服务器售后电话 编辑:程序博客网 时间:2024/04/30 13:37
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主键
- MyEclipse开发Hibernate持久层
- Java数据库访问之持久层框架:Hibernate基础
- Spring+Hibernate DAO 持久层开发
- Hibernate学习笔记之持久层操作
- Spring+Hibernate DAO 持久层开发, Spring 用 Hibernate 访问数据库的三种方法.推荐使用回调
- Spring+Hibernate DAO 持久层开发, Spring 用 Hibernate 访问数据库的三种方法.推荐使用回调
- Hibernate持久层操作
- Hibernate 持久层操作
- 持久层理解 hibernate
- 使用Hibernate和Spring开发事务性持久层
- 用 Hibernate 和 Spring 开发事务持久层
- 用 Hibernate 和 Spring 开发事务持久层
- 用 Hibernate 和 Spring 开发事务持久层
- 用 Hibernate 和 Spring 开发事务持久层
- hibernate主键和数据库主键
- 关于持久层主键生成策略
- Spring持久层(三) Hibernate
- 二维数组的动态内存分配与析构
- 基于 Struts 2 拦截器实现细粒度的基于角色的权限认证实现
- 源码分析vxWorks6.x的ARM板BSP启动过程(上)
- MFC用户界面_CDialog
- PHP删除cookie的一个小秘密
- 数据库持久层开发之Hibernate主键
- java序列化的理解
- [Internet]Web服务器CC攻击症状及防护
- cst软件求解器原理
- 源码分析vxWorks6.x的ARM板BSP启动过程(下)
- Android 数字签名
- C++ 的序列化
- CFBundleVersion in the Info.plist file must contain a higher version than that of the previously uploaded version.
- 再谈线性工作流