搜索

Hibernate内置标识符生成器

gecimao 发表于 2019-06-11 21:00 | 查看: | 回复:

  Java默认情况是根据内存地址来区分不同的对象,关系数据库则是根据主键值区分不同的行。Hibernate使用对象标识符(OID)来建立对象和数据库表中记录的关联桥梁,OID和数据库记录的主键相对应。为了保证OID的唯一性和不可变性,应让Hibernate产生OID值,而不是应用程序。

  应用程序不应该使用具有业务逻辑的字段作为表的主键。由于主键的非空,唯一和不可变特性,因此会有在需要更改业务字段的值使会不方便等一些麻烦。在Hibernate中,对于代理主键,OID支持short,int和long类型。

  increment标识符生成器由Hibernate以递增的方式为代理主键赋值,其会读取表中最大的主键值,新插入的对象会在该最大主键值上递增

  适用于代理主键,由底层数据库生成标识符。底层数据库必须支持自动增长字段类型,如MySQL,MS SQL Server等

  底层数据库必须设置主键为自动增长类型,MySQL:auto_increment MS SQL Server:identity。

  适用于代理主键,Hibernate根据底层数据库的序列生成标识符,底层数据库应支持sequence,如Oracle。

  适用于代理主键,Hibernate根据high/low算法生成标识符。

  Hibernate将特定表的字段作为“high”值,默认情况下选用hibernate_unique_key表的next_hi字段。

  使用与代理主键,根据数据库底层对自动生成标识符的支持,选择使用identity,sequence或hilo。

  适用于代理主键,Hibernate采用128位的UUID算法生成标识符。

  由Java应用程序负责生成标识符,因此应将setId()方法不能设置为private,实际中应尽量避免自然主键。

  在应用程序开发中,应尽量使用代理主键,避免使用具有业务含义的自然主键。在使用代理主键时,偏向于使用native,可以针对不同的数据库平台自动使用相应的自增长策略,从而使得程序具有跨数据库平台的能力。

  1、increment标识符生成器由Hibernate以递增的方式为代理主键,例如:博文来自:路漫漫,水迢迢

  1.assigned标识符生成器 assigned标识符生成器指定由应用程序生成并维护持久化对象的标识符。在这种情况下,标识符生成器使用应用程序分配给对象的标识符值。一般情况下,assigned生成器...博文来自:江南才子

  数据库中的主键能够唯一识别一条记录,它可以是一个字段也可以是多个字段的组合。主键的主要作用是标识表中的一条记录,还有和其他表中的数据进行关联。数据库中的主键类型必须符合唯一性约束和非空约束。作为附加属...博文来自:Sunny

  Hibernate提供的内置标识符生成器Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键来识别或区分同一个表的不同记录。Hibernate使用OID(对象标识符)来统一两者之间...博文来自:含泪播种的人,一定能含笑收获!

  Generator元素用来设定标识符生成器.Hibernate提供了以下几种内置标识符生成器:Increment:适用于代理主键.由hibernate自动以递增的方式生成标识符,每次增量为1.Iden...博文来自:xhy0422的专栏

  Hibernate提供的几种内置标识符生成器标识符生成器简   介increment适用于代理主键。由Hibernate以自增的方式生成,增量为1identity适用于代理主键。由底层数据库生成,前提...博文来自:wzwjr的专栏

  mysql数据库,表的主键id是int型的,非自增的,rn hibernate的标识生成器有适合这种情况的吗,不能用increment,因为不是自增的论坛

  1.assigned标识符生成器 assigned标识符生成器指定由应用程序生成并维护持久化对象的标识符。在这种情况下,标识符生成器使用应用程序分配给对象的标识符值。一般情况下,assigned生成器...博文来自:ETTTTTSS的专栏

  最近sybooshibernatecodegen发表其第2个版本。主要用来帮助公司/开发人员能很简单地导入hibernate到所开发的项目中来。主要具有以上属性/优点:1,简单。可以以eclipsep...博文来自:mty的专栏

  1)assigned主键由外部程序负责生成,无需Hibernate参与。2)hilo通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。3)seqhilo与hilo类似,通过...博文来自:卢艳亮

  请教各位,在Hibernate中的标识符生成器有几种?rn其中,,vm是什么?论坛

  这次我们一起来看看Hibernate的ID标识符生成器,也就是Hibernate生成OID有哪些策略!先看下表: Hibernate标识生成策略标识符生成器描述increment适用于代理主键。由Hi...博文来自:lenotang的专栏

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

  转自梁立新的《项目实践与精解》1、increment(递增)一般用mysql数据库时使用,为long、short、int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时使用,在 集群下不能使...博文来自:idiot2006的专栏

  hibernateid生成器1、identity:用于MySql数据库。特点:递增 ..    .注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。 2、...博文来自:酸奶超人的专栏

  一:使用默认的自增主键主键自增有好几种策略:identity是MySql对应的自增、sequence对应oracle的自增序列,native是根据所连接的数据库自动选择上诉两个或hilo策略在 @Id...博文来自:徐行

  转自:年08月06日星期一上午09:54业务主键和代理主键的...博文来自:中国资深步行专家 CSDNBLog

  所有抱怨社会不公和制度的人,翻译过来往往只有一句话:请给我金钱,女人和社会地位。对象标识符是个什么玩意?对象标识符(OID)来创建对象和数据库表里记录的对应关系。通俗点说:全世界有那么多叫张三的人,但...博文来自:故园

  二hibernate的持久化类和对象标识符1.1持久化类的编写规范1.1.1什么是持久化类:Hibernate是持久层的ORM映射框架,专注于数据的持久化工作。所谓的持久化,就是将内存中的数据永久存储...博文来自:u014163689的博客

  下午用hibernate去改善一个项目,结果出现了好多关于映射类型的问题,在网上搜的好多答案也不尽人意,后来结合着hibernate文档以及孙卫琴老师的《hibernate逍遥记》终于解决了hiber...博文来自:左手程序,右手写诗…

  做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO。意思是,在项目设计时,要么...博文来自:鹏霄万里展雄飞

  由于设计上的需要,所以不得不自己生成流水号。思路:使用一个表记载流水,每次取的同时增加1,所以下一个用户取的时候就是新的流水号了。不过必须在一个事务中实现,否则可能会有问题的。设计表createtab...博文来自:tolison的专栏

  hibernate的主键生成器:generator元素:表示了一个主键生成器,它用来为持久化类实例生成唯一的标识。1.1程序员自己控制:assigned1.2数据库控制:identity(标识列/自动...博文来自:anhldd的博客

  hibernate可以自定义主键,自定义的主键策略可以指定实现类,保存时自动调用自定义的类来获取主键,前提是自定义的类要实现IdentifierGenerator接口。另外,看网上许多人的做法,还要实...博文来自:scorpio_9157的专栏

  在hibernate所支持的数据库中,oracle的序列号不是自动主键,sequence他是独立于数据表工作的,可以绑定某个数据库记录的新增操作。如果进行反向工程要选择序列号选项,如图:如果想手动编写...博文来自:DanZhiJian的专栏

  Java语言按内存地址来识别或区分一个类的不同对象,在关系数据库中按主键值来识别或区分同一个表中的不同记录,hibernate使用OID来建立内存对象与关系数据库表中记录的对应关系,OID在关系数据库...博文来自:jazywoo_在路上

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:我走小路的博客

  前言:前段时间做项目用到了图片裁剪,调用系统裁剪图片,结果在我的小米3上一直有问题,裁剪界面打不开,在其他设备上没问题,于是研究其他软件是怎么做的,淘宝的裁剪图片是自己做的,当然没问题,京东的是调用的...博文来自:zwenkai

  Intellij IDEA 如何通过数据库表生成带注解的实体类图文详细教程 Intellij IDEA 如何通过数据库表生成带注解的实体类 Contents 第一步:新建...博文来自:liu_yulong的专栏

  灰度图像的自动阈值分割(Otsu 法)机器视觉领域许多算法都要求先对图像进行二值化。这种二值化操作阈值的选取非常重要。阈值选取的不合适,可能得到的结果就毫无用处。今天就来讲讲一种自动计算阈值的方法。这...博文来自:Ivan 的专栏

  用以前以前写过的自定义课表软件 ,Android 自定义View课程表表格 原生View截图合成分享的图片 看到的是图片只显示到11节处,下面的没有...博文来自:ShallCheek

  本matplotlib安装过程在一定程度上参考了 因为学习机器学习的需要,又准备参考《机器学...博文来自:SCUT_Arucee的博客

  1.为什么是Fiddler? 抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下: a.Firebug虽然可以抓包...博文来自:专注、专心

  servlet页面代码:@每次请求时产生一个token(一般为时间戳),存于session中并随之用hidden提交,在servlet中判断接收到的token和session中的是否一致来判断是否重复...博文来自:高调做事,低调做人!

  首先,确定你已经有了CSR证书请求、开发证书和App ID。如果你不是第一次开发iOS应用程序,那么你可能已经有了这些东西。那么你可以继续以下的步骤。一、配置App ID登录你的provisionin...博文来自:kmyhy的专栏

  目前还没有写出这个demo,不过可以参考下面这两个链接,一个是显示日期的,还有一个是合并单元格: 合并单元格: 博文来自:dddd的博客

  以回归为例吧,回归在某些场合可能更精准 支持连续变量和类别变量,类别变量就是某个属性有三个值,a,b,c,需要用Feature Transformers中的vectorindexer处理 上来是一堆...博文来自:chencheng12077的博客

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  简述关于gif的使用在实际项目中我用的并不多,因为我感觉瑕疵挺多的,很多时候锯齿比较严重,当然与图存在很大的关系。关于生成gif的方法可以提供一个网站preloaders,基本是可以满足需求的。简述 ...博文来自:本博客暂停更新,后期专注维护个人公众号『高效程序员』,欢迎关注!

  今天为了休息下,换换脑子,于是就找到了我之前收藏的一篇python的文章,是关于ddos攻击的一个脚本,正好今天有空,就实践下了。 附上源码pyDdos.py: #!/usr/bin/env ...博文来自:jeepxiaozi的专栏

本文链接:http://robynlynne.com/duixiangbiaoshifu/527.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部