`
阿尔萨斯
  • 浏览: 4200912 次
社区版块
存档分类
最新评论

2 主键生成策略

 
阅读更多

    转自:http://www.cnblogs.com/talo/articles/1663978.html

    本文讲述Hibernate的generator属性的意义。Generator属性有7种class,本文简略描述了这7种class的意义和用法。
    Hibernate的Generator属性有7种class,本文简略描述了这7种class的意义和用法。
    1、identity:用于MySql数据库。特点:递增

    <idname="id"column="id">
    <generatorclass="identity"/>
    </id>
    注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。
    2、sequence:用于Oracle数据库
    <idname="id"column="id">
    <generatorclass="sequence">
    <paramname="sequence">序列名</param>
    </generator>
    </id>
    3、native:跨数据库时使用,由底层方言产生。
    Default.sequence为hibernate_sequence
    <idname="id"column="id">
    <generatorclass="native"/>
    </id>
    注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。
    如果Oracle中没有该序列,连Oracle数据库时会报错。
    4、hilo:通过高低位合成id,先建表hi_value,再建列next_value。必须要有初始值。
    复制代码
    <idname="id"column="id">
    <generatorclass="hilo">
    <paramname="table">high_val</param>
    <paramname="column">nextval</param>
    <paramname="max_lo">5</param>
    </generator>
    </id>
    复制代码
    5、sequencehilo:同过高低位合成id,建一个sequence序列,不用建表。
    复制代码
    <idname="id"column="id">
    <generatorclass="hilo">
    <paramname="sequence">high_val_seq</param>
    <paramname="max_lo">5</param>
    </generator>
    </id>
    复制代码
    6、assigned:用户自定义id;
    <idname="id"column="id">
    <generatorclass="assigned"/>
    </id>
    7、foreign:用于一对一关系共享主健时,两id值一样。

    本文讲解Hibernate中hbm的generator子元素的一些内置生成器的快捷名字。Generator子元素是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。
    在*.hbm.xml必须声明的< generator>子元素是一个Java类的名字,用来为该持久化类的实例生成唯一的标识。
    <generatorclass="sequence"/>
    这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然,Hibernate提供了很多内置的实现。下面是Generator子元素的一些内置生成器的快捷名字:
    increment(递增)
    用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。
    identity
    对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。返回的标识符是long, short 或者int类型的。
    sequence (序列)
    在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。
    hilo (高低位)
    使用一个高/低位算法来高效的生成long, short或者 int类型的标识符。给定一个表和字段(默认分别是是hibernate_unique_key 和next_hi)作为高位值得来源。高/低位算法生成的标识符只在一个特定的数据库中是唯一的。在使用JTA获得的连接或者用户自行提供的连接中,不要使用这种生成器。
    seqhilo(使用序列的高低位)
    使用一个高/低位算法来高效的生成long, short或者 int类型的标识符,给定一个数据库序列(sequence)的名字。
    uuid.hex
    用一个128-bit的UUID算法生成字符串类型的标识符。在一个网络中唯一(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。
    uuid.string
    使用同样的UUID算法。UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能使用在PostgreSQL数据库中
    native(本地)
    根据底层数据库的能力选择identity, sequence 或者hilo中的一个。
    assigned(程序设置)
    让应用程序在save()之前为对象分配一个标示符。
    foreign(外部引用)
    使用另外一个相关联的对象的标识符。和< one-to-one>联合一起使用。
    Generator子元素的用法:
    <idname="id"type="string"unsaved-value="null">
    <columnname="USER_ID"/>
    <generatorclass="uuid.hex"/>
    </id>

分享到:
评论

相关推荐

    JPA学习笔记-EJB-03JPA主键生成策略总结

    总结一下关于JPA的主键生成策略,JPA是用@GeneratedValue标记来注释的。一般的我把主键生成分成两大类。第一个就是简单的单字段主键类型,一个就是复杂的复合主键类型。我们分2种情况分别讨论。 第一种单字段主键...

    总结hibernate常用主键生成策略。

    1主键常用的生成策略 2对数据库的依赖性总结 3关于主键生成策略的选择 详细解释

    doma:Doma版本1

    Doma使用生成源代码并在编译时验证sql映射。 注意 这是Doma 1。 新版本的Doma 2是在开发的。 维修政策 我们仅接受针对Doma 1的错误修复。我们将在Doma 2中包含新功能。 文献资料 Google群组 聊天室 用Maven编译 要...

    Hibernate映射配置入门进阶详解

    1)根元素映射 2)类映射 3)属性映射 4)主键的配置 5)主键生成策略 复合主键策略 史上最详细

    Hibernate笔记 马士兵

    第13课 ID主键生成策略 20 一、 Xml方式 20 元素(主键生成策略) 20 二、 annotateon方式 21 1、AUTO默认 21 2、IDENTITY 22 3、SEQUENCE 22 4、为Oracle指定定义的Sequence 22 5、TABLE - 使用表保存id值 23 三、 ...

    基于数据库的自动化生成工具,自动生成JavaBean、数据库文档、框架代码等(v5.8.8版_JAR)

    一直以来根据数据库表结构自动生成项目框架代码都是一件让人很头痛的事情,如果能自动生成框架的... 5、Entity主键生成策略新增identity和sequence。 6、开放自定义作者的配置。 7、修复一些Bug并进行了一些优化。

    根据表结构生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第6版)

    5、新增实体主键生成策略,可以配置手动生成主键也可以配置自动生成主键。 6、可以根据选择的标准模板不同自动生成相应扩展名的文件,也可以手动设置文件扩展名。 7、新增设置文件注释,并可以使用部分系统参数。...

    08.拓薪教育-hibernate4.3的hibernate.cfg.xml基本配置.part2

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

    尚硅谷JPA视频教程

    JPA视频_Table主键生成策略 · 7. JPA视频_EntityManager(1) · 8. JPA视频_EntityManager(2) · 9. JPA视频_EntityManager(3) · 10. JPA视频_EntityManager(4) · 11. JPA视频_EntityTransaction · 12. ...

    06.拓薪教育-hibernate4.3环境搭建中.part2

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

    02.拓薪教育-hibernate4.3-orm剖析.part2

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

    05.拓薪教育-hibernate4.3环境搭建上.part2

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

    04.拓薪教育-hibernate4.3官方核心包介绍.part2

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

    CSharp Rod ORM 持久化框架

    本人开发基于C# Attribute 声明式的ORM 框架,自带Sqlite数据库的一个测试例子。 本框架的特点: 1. 无XML配置,基于Attribute的配置方式 ...4. 自定义主键生成策略,字段数据类型,一对一,一对多,懒加载的加载机制

    hibernate 配置文件 java类 生成工具

    改进如下: 1. 增加了多数据类型的支持; 2. 增加了toJson 方法,可以将对象转换为 json数据格式; 3. 去掉了部分无用代码; 4. 修正了toString 中多余逗号的问题; 5. 去掉了HBM文件中旧的缓存...2.增加主键策略

    演示怎样在Hibernate中使用复合主键

    那么,我们这里的解决方案是使用uuid.hex生成32个字符长度的ITEM_ID订单编号,然后CATEGORY_ITEM表根据这个订单编号来追加业务逻辑数据。 使用方式: 1、下载解压之后,使用MyEclipse导入工程 2、使用查询分析,把...

    CMEU代码生成器

    生成Mapper映射文件(dao层接口SQL语句,支持生成3表关联(比如:A表关联B表,B表关联C表,一次便可获得3张表的数据),支持主键策略;&lt;如果选择创建Assist支持分页,去重,排序,无注入动态查询等&gt;); 生成service层接口(与dao...

    Hibernate注解

    * name 表示该表主键生成策略名称,它被引用在@GeneratedValue中设置的“gernerator”值中 * sequenceName 表示生成策略用到的数据库序列名称。 * initialValue 表示主键初始值,默认为0. * allocationSize 每次主键...

    hibernate配置

    &lt;generator class="assigned"&gt;&lt;/generator&gt; //数据库中的主键生成策略 数据库中表的其它字段所对应的持久化对象中的属性名" column="对应数据库中表的其它字段名" type="java.lang.String(数据库中其它字段...

    ejb3.0 注解 其中一部分

    txt纯文本 1. @Id 显示声明属性为标识符 2. @GeneratedValue(strategy=GenerationType.IDENTITY) 表示主键是自动生成策略,strategy 有很多

Global site tag (gtag.js) - Google Analytics