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)

相关推荐

  • Lotus系统中CS与BS有什么区别

    技术Lotus系统中CS与BS有什么区别这篇文章主要为大家展示了“Lotus系统中CS与BS有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Lotus系统中CS与BS

    攻略 2021年12月3日
  • VS连接sqlsever数据库

    技术VS连接sqlsever数据库 VS连接sqlsever数据库工具:
    1.Visual Studio (我使用的是vs2013)
    2.SQL Server (我使用的是sql server2008)

    礼包 2021年11月22日
  • qt的tcp通信编程(qt串口通信代码)

    技术QT5实现UDP通信的示例代码怎么写QT5实现UDP通信的示例代码怎么写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言该例程经过实际

    攻略 2021年12月15日
  • python编程实现用for计算n的阶乘(python如何编写阶乘)

    技术Python如何实现阶乘之和这篇文章给大家分享的是有关Python如何实现阶乘之和的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码实现Sum=0
    factorial=1
    num = in

    攻略 2021年12月14日
  • 夜晚的英语,晚上的单词用英语怎么说

    技术夜晚的英语,晚上的单词用英语怎么说英文:night 读法2113:英 [naɪt] 美 [naɪt] 释义:n.夜;夜晚5261;晚上夜晚的英语,夜晚(夜里就寝前的一段时间4102) 短语1653: 1、waste

    生活 2021年10月26日
  • P2568 GCD,线性筛-欧拉函数 模板)

    技术P2568 GCD,线性筛-欧拉函数 模板) P2568 GCD(线性筛-欧拉函数 模板)有两个易错点:
    1.欧拉函数的定义是1到n内互质的数,但是“互质”不一定要都是质数,其实就只需要gcd(a,

    礼包 2021年12月9日