- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
hibernate主键id生成方式
1) assigned主键由外部程序负责生成,无需Hibernate参与。2) hilo通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。3) seqhilo与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。4) increment主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。5) identity采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL中的主键生成机制。6) sequence采用数据库提供的sequence 机制生成主键。如Oralce 中的Sequence。7) native由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。8) uuid.hex由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键。9) uuid.string与uuid.hex 类似,只是生成的主键未进行编码(长度16)。在某些数据库中可能出现问题(如PostgreSQL)。10) foreign使用外部表的字段作为主键。一般而言,利用uuid.hex方式生成主键将提供最好的性能和数据库平台适应性。另外由于常用的数据库,如Oracle、DB2、SQLServer、MySql 等,都提供了易用的主键生成机制(Auto-Increase 字段或者Sequence)。我们可以在数据库提供的主键生成机制上,采用generator-class=native的主键生成方式。不过值得注意的是,一些数据库提供的主键生成机制在效率上未必最佳,大量并发insert数据时可能会引起表之间的互锁。数据库提供的主键生成机制,往往是通过在一个内部表中保存当前主键状态(如对于自增型主键而言,此内部表中就维护着当前的最大值和递增量),之后每次插入数据会读取这个最大值,然后加上递增量作为新记录的主键,之后再把这个新的最大值更新回内部表中,这样,一次Insert操作可能导致数据库内部多次表读写操作,同时伴随的还有数据的加锁解锁操作,这对性能产生了较大影响。因此,对于并发Insert要求较高的系统,推荐采用uuid.hex 作为主键生成机制。
十五道Hibernate面试题并附有答案
(1)一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选)
A)表对应类B)记录对应对象C)表的字段对应类的属性D)表之间的参考关系对应类之间的依赖关系
(2)以下关于SessionFactory的说法哪些正确?(多选)
A)对于每个数据库事务,应该创建一个SessionFactory对象B)一个SessionFactory对象对应一个数据库存储源。C)SessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源,只需要创建一个。D)SessionFactory的load()方法用于加载持久化对象
(4)元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)
A)noneB)save
C)delete
D)save-update
(5)以下哪些属于Session的方法?
A)load()B)save()
C)delete()
D)update()
E)open()
F)close()
(6)以下程序的打印结果是什么?(单选)
tx?=?session.beginTransaction(); ?
Customer?c1=(Customer)session.load(Customer.class,new?Long(1)); ?
Customer?c2=(Customer)session.load(Customer.class,new?Long(1)); ?
System.out.println(c1==c2); ?
mit(); ?
session.close();?
A)运行出错,抛出异常B)打印falseC)打印true
(7)以下程序代码对Customer的name属性修改了两次:
tx?=?session.beginTra
您可能关注的文档
- 柜中有道.ppt
- 九年级数学期中模拟试题.doc
- 课改校长谈.刘村初中.doc
- 守恒法在化学解题中的应用技巧.doc
- 2011年秋季教学安排.doc
- 清华激光原理第五讲(3月24日).ppt
- 仪器分析1ad.doc
- 带团队和营销方案.doc
- 期末复习3-4机械振动机械波.ppt
- “鼓士气、树新风、促发展”主题教育活动实施方案.doc
- 湖北省黄石市2025春季学期高二期末统一测试语文含答案.doc
- 辽宁省沈阳市五校协作体2024-2025学年高二下学期期末生物试卷(含答案).doc
- 内蒙古赤峰市2024-2025下学年高一下学期期末生物试卷(有答案).doc
- 内蒙古赤峰市2024-2025学年高二下学期期末联考英语含答案.doc
- 内蒙古赤峰市2024-2025学年高二下学期期末联考化学含答案.doc
- 内蒙古赤峰市2024-2025学年高二下学期期末联考生物试卷(有答案).doc
- 内蒙古赤峰市2024-2025学年高二下学期期末联考数学含答案.doc
- 内蒙古赤峰市2024-2025学年高二下学期期末联考物理含答案.doc
- 内蒙古赤峰市2024-2025学年高二下学期期末联考语文含答案.doc
- 内蒙古赤峰市2024-2025学年高一下学期期末联考地理含答案.doc
文档评论(0)