Hibernate面试精华问题及解答汇总
需积分: 9 187 浏览量
更新于2024-11-07
收藏 4KB TXT 举报
Hibernate 是一个流行的开源对象关系映射 (ORM) 框架,用于简化 Java 应用程序与关系数据库之间的交互。面试中关于 Hibernate 的经典问题主要集中在其核心概念、使用方法以及常见陷阱上。以下是一些关键知识点的详细解释:
1. **持久化操作选择**:
- 问题(1) 提到的可能是 Hibernate 的基本操作选择,其中 A 代表的是实体的获取方式。通常情况下,选择 C 选项(懒加载)是最佳实践,它允许在第一次访问属性时才去数据库查询,提高性能。
2. **SessionFactory 的管理**:
- 在(2) 中,正确的理解是 C 选项。SessionFactory 是 Hibernate 中创建 Session 对象的工厂,但每个 Session 可能对应不同的数据库事务,所以需要一个事务上下文来确保一致性。
3. **一对多关系的处理**:
- 在(3) 里,Customer 有一个 Set 类型的 orders 属性。当在 Customer.hbm.xml 中配置这个关系时,通常会使用 `<bag>` 或 `<set>` 标签,而不是 `<:property>`,所以这里应该是空白或者不选。
4. **级联操作的选择**:
- 问题(4) 考察级联操作,Cascade 是 Hibernate 中用于自动执行关联操作的方式,选择 D (save-update) 表示在保存或更新主对象时,也更新关联的对象。
5. **Session 的常用方法**:
- 在(5) 中,load 方法用于根据主键获取单个对象,save 用于保存新对象,delete 用于删除对象,update 更新对象,open 和 close 分别打开和关闭 Session。这里没有特定答案,但可能会考察面试者对这些操作的理解和应用场景。
6. **事务和数据一致性**:
- (6) 题目涉及到事务的使用。由于两次 load 了同一个对象,第二次修改会覆盖第一次的值,所以 commit 后输出的结果是 "g" (genuine),表示两个引用指向同一对象,即输出 true。
7. **更新操作的影响**:
- 在(7) 中,setName 方法被调用了两次,但 Hibernate 只会在提交事务时执行一次 SQL 更新,因此更新次数是 1。
8. **状态管理与事务隔离级别**:
- (8) 题目询问撤销操作(Rollback)的状态。Hibernate 的默认事务策略是 Savepoint,如果选择撤销事务,应该选 D 选项,表示可以回滚到事务开始的状态。
9. **事务隔离级别**:
- 最后一个问题(9) 可能是在测试事务隔离级别的场景。如果 customer 的状态在事务提交前被改变,可能意味着事务隔离级别不够,比如读已提交(Read Committed),这时setName 应该不会影响其他事务看到的值。
通过以上分析,面试者在 Hibernate 面试中需要注意对 ORM 基础知识的掌握,包括持久化操作、SessionFactory 的管理、关系映射、事务管理和状态控制等方面。同时,理解 Hibernate 的底层实现和优化策略也是提升竞争力的关键。
106 浏览量
2019-03-01 上传
110 浏览量
146 浏览量
437 浏览量
2013-03-19 上传
mjz_jia
- 粉丝: 0
- 资源: 1
最新资源
- 博客
- 易语言超级列表框虚表化
- polybar:快速且易于使用的状态栏
- AT24C02存储小数_24c02_stm32f103单片机与24c02通信_at24c0stm32f103_f103野火
- emlog资源吧模版源码适合做资源网
- SpaceX Animated New Tab-crx插件
- text-editor-website:一个简单的网站,带有文本编辑器格式的超链接
- 威廉姆斯25
- mysql:实现MySQL协议的纯node.js JavaScript客户端
- 易语言超级列表框置行色
- python-ucsfbids,bids-import.py codecov.yml conftest.py
- andrew_ml_ex5.zip
- Design:此存储库包含 Hoccer XO Android 和 iOS 客户端的 .psd 文件
- react-music-player:也许是做出响应的最好的漂亮HTML5响应播放器组件
- ipcamera_client:当前的客户端Web应用
- CRCP2330