开发者社区> wangccsy> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Hibernate标识符生成器

简介: “hilo”通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。 “seqhilo”与hilo 类似,通过hi/lo 算法实现的主键生成机制,需要数据库中的 Sequence,适用于支持 Sequence 的数据库,如Oracle。
+关注继续查看

“hilo”
通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。


“seqhilo”
与hilo 类似,通过hi/lo 算法实现的主键生成机制,需要数据库中的 Sequence,适用于支持 Sequence 的数据库,如Oracle。


“increment”
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:不能在集群下使用。


“identity”
采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL 中的主键生成机制。


“sequence”
采用数据库提供的 sequence 机制生成主键。如 Oralce 中的Sequence。


“native”
由 Hibernate 根据使用的数据库自行判断采用 identity、hilo、sequence 其中一种作为主键生成方式。


“uuid.hex”
由 Hibernate 基于128 位 UUID 算法 生成16 进制数值(编码后以长度32 的字符串表示)作为主键。


“uuid.string”
与uuid.hex 类似,只是生成的主键未进行编码(长度16),不能应用在 PostgreSQL 数据库中。


“foreign”
使用另外一个相关联的对象的标识符作为主键。


以下举例:
1、指定参数的情况:
   
     
        SEQ_CHILD
     

使用的是sequence,适合oracle数据库;


2、对于sql server2000中的数据库子增字段,在配置文件使用下列方法实现:

    
    

这里主要是:identity:代表由sql server2000数据库自己提供子增字段.如果要hibernate自己提供,则用increment关键字来实现


3、如果表中的主键用字符串类型:可以用hibernate自己提供的方法实现主键唯一:
 
     
     
 
使用的是uuid.hex: 采用128位的算法来生成一个32位字符串。最通用的一种方式。适用于所有数据库。

 

 

关键字:   标识符    
1,increment
代理主键,由Hibernate自动以递增方式生成标识符,每次增量为1。
优点:不依赖于底层数据库系统,适用于所有的数据库系统。
缺点:只适用于单个Hibernate应用进程访问同一个数据库的场合,在集群环境下不推荐使用。

2,identity
代理主键,由底层数据库生成标识符。
前提条件:数据库支持自动增长字段类型。
数据库定义:MySql                     auto_increment
                      MS SQL Server     identity

3,sequence
代理主键,Hibernate根据底层数据库的序列来生成标识符。
前提条件:数据库支持序列。

4,hilo
代理主键,Hibernate根据high/low算法来生成标识符。
Hibernate把特定表的字段作为“high”值。在默认情况下选用hibernate_unique_key表的next_hi字段

5,native
代理主键,根据数据库自动识别类型,identity,sequence或hilo。
MySql和MS SQL Server :identity
oracle : sequence
优点:适用于跨数据库平台开发。

6,assigned
自然主键

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Hibernate缓存和状态
一、缓存 缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。   缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。
680 0
Hibernate之开门见山
1:SSH框架:   Struts2:基于mvc模式的应用层框架模式(Servlet层)   Hibernate:基于持久层的框架(数据访问层)   Spring:创建对象对象处理的依赖关系以及框架整合(Service层) 2:框架和之前学的对比MVC分层模式: 搭建Hiberna...
1092 0
Hibernate单表操作
单一主键 assigned:由Java应用程序负责生成(即手工的赋值) native:由底层的数据库自动的生成标示符,如果是MySQL就是auto_increment,如果是Oracle就是sequence,等等 操作的时候还是需要结合hibernate.cfg.xml文件的,因为数据库中的hbm2ddl.auto属性如果是update的时候,设置为主键自增是可以的;但是如果是create的时候,第二次如果不手工的改变,恐怕就要出BUG了。
733 0
Hibernate 分页 查询
昨天的作业  分页: 主要的代码块:(明天实现分页的封装) 1 package com.cy.beans; 2 3 import java.util.List; 4 5 /** 6 * 定义一个分页对象 7 * @author acer 8 * ...
693 0
hibernate 使用
    package org.slave4j.utils; import java.util.ArrayList; import java.util.List; import java.
854 0
NHibernate分页
转载:http://www.cnblogs.com/tenghoo/archive/2011/02/14/1954393.html NHibernate专题:http://kb.cnblogs.com/zt/nhibernate/ NHibernate官方站点:http://nhforge.
670 0
NHibernate参考资料汇总
http://www.cnblogs.com/lyj/archive/2008/10/30/1323099.html 这个地方对这个信息进行了详细的汇总,很全面,值得学习Nhibernate参考   为了方便随时参考,可以在这个下载完整的word文件 http://cid-56b433ad3d1871e3.
486 0
Hibernate 3入門
原文链接 : http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=3077 Hibernate 是「物件/關係對應」(Object/Relational Mapping)的解決方案,簡寫為ORM,簡單的說就是將 Java 中的物件與物件關係,映射至關聯式資料庫中的表格與表格之間的關係, Hibernate 提供了這個過程中自動對應轉換的方案。
777 0
+关注
wangccsy
前一个帐号wangccsy@126.com不知道怎么的就成了企业帐号,改不成个人。所以重新注册了一个个人帐号。老程序员。精通JAVA,C#,数据库,对软件开发过程和流程熟悉。考取系统分析师,项目管理师和系统架构设计师等软件资格考试认证。愿意和大家一起前进。
983
文章
391
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载