Hibernate主键的示例分析

技术Hibernate主键的示例分析小编给大家分享一下Hibernate主键的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Hiber

边肖将与您分享Hibernate主键的示例分析。相信大部分人都不是很了解,所以分享这篇文章供大家参考。希望你看完这篇文章会有很多收获。我们一起来看看吧!

Hibernate主键介绍

1.Assigned

Assigned方法是程序生成的主键值,应该在save()之前指定,否则会引发异常。

特点:主键的生成值完全由用户决定,与底层数据库无关。用户需要维护主键值,并在调用session.save()之前指定主键值。

2.Hilo

Hilo使用高低位算法生成主键。高低位算法使用高值和低值,然后将算法得到的两个值拼接在一起作为数据库中的* * *主键。Hilo模式需要额外的数据库表和字段来提供高阶值来源。默认使用的表是

Hibernate_unique_key,默认字段叫做next_hi。Next_hi必须有记录,否则会出错。

特点:需要额外的数据库表支持,可以保证同一数据库中主键的* * *属性,但不能保证多个数据库之间主键的* * *属性。Hilo主键生成方式由Hibernate维护,因此Hilo模式与底层数据库无关,但hi/lo算法使用的表的值不宜手动修改,否则会造成主键重复的异常。

3.Increment

增量方法自动增加主键值以生成新的主键值,但需要底层数据库支持Sequence。Oracle、DB2等。您需要在映射文件xxx.hbm.xml中添加增量标识符的设置

特点:由Hibernate自己维护,适用于所有数据库,不适合多个进程同时更新数据库,也不适合单个进程访问数据库。不能在集群环境中使用。

4.Identity

当时,Identity支持根据底层数据库自动增长,不同的数据库使用不同的主键增长方式。

特点:与底层数据库相关,数据库需要支持Identity,比如MySQl中的auto _ increment,SQL Server中的Identity。支持的数据库包括MySql、SQL Server、DB2、Sybase和HypersonicSQL。身份不需要Hibernate和用户的介入,使用方便,但不方便在不同数据库之间移植程序。

5.Sequence

Sequence要求底层数据库支持Sequence模式,例如Oracle数据库。

特性:底层数据库需要支持序列。支持该序列的数据库包括DB2、PostgreSql、Qracle、SAPDb和其他不同数据库之间的移植程序。特别是,当从支持序列的数据库迁移到不支持序列的数据库时,需要修改配置文件。

6.Native

原生主键生成方法将根据不同的底层数据库自动选择身份、序列和Hilo主键生成方法。

特点:针对不同的底层数据库,采用不同的主键生成方法。Hibernate会根据底层数据库采用不同的映射方式,方便程序移植。如果项目中使用了多个数据库,则可以使用此方法。

7.UUID

UUID使用128位UUID算法生成主键,可以保证网络环境中主键的* * *性,也可以保证不同数据库、不同服务器中主键的* * *性。

特点;它可以保证数据库中主键的* * *属性,生成的主键占用更多的存储空间。

8.Foreign GUID

在一对一的关系中使用Foreign。GUID主键生成方法使用特殊算法保证生成主键的* * *属性,支持SQL Server和MySQL。上面介绍了Hibernate主键。

以上就是文章《Hibernate主键实例分析》的全部内容,感谢阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。想了解更多知识,请关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/137017.html

(0)

相关推荐

  • qq空白昵称代码复制,第五人格怎么取空白名字

    技术qq空白昵称代码复制,第五人格怎么取空白名字1qq空白昵称代码复制、在网上搜索昵称空白,会提供一些特殊字符。在安卓手机里,在输入框中输入游戏识别不了的符号。比如说一些表情或者符号。打出来之后点击确定,就会直接变成空白

    生活 2021年10月31日
  • 读物列表

    技术读物列表 读物列表title: 读物列表
    date: 2020-12-17 11:31:08
    tags: 杂谈科普研究、科技爱好者周刊[科普研究][http://kpyj.crsp.org.cn/c

    礼包 2021年10月19日
  • 如何理解rman中的incarnation

    技术如何理解rman中的incarnation如何理解rman中的incarnation,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。inc

    攻略 2021年11月30日
  • docker-compose基本开发环境部署文件是怎样的

    技术docker-compose基本开发环境部署文件是怎样的docker-compose基本开发环境部署文件是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个

    攻略 2021年11月18日
  • 春天有哪些花开,春夏秋冬各有哪些花开哟

    技术春天有哪些花开,春夏秋冬各有哪些花开哟一年四季各有什么花对应开放1、春天春天开花的种类有很多,比如:梅花、水仙、迎春、白玉兰、琼花、君子兰、牡丹、芍药、丁香、杜鹃、西洋杜鹃、樱花、含笑、玫瑰、紫荆、棣棠、锦带花、连翘

    生活 2021年10月20日
  • oracle与mysql使用上的区别(oracle和mysql的区别和优缺点)

    技术oracle与mysql有哪些区别小编给大家分享一下oracle与mysql有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    攻略 2021年12月14日