Hibernate面试必备:核心概念与实践解析

需积分: 0 0 下载量 10 浏览量 更新于2024-08-03 收藏 45KB DOC 举报
"这篇资料汇集了关于Hibernate面试的常见问题及其答案,涵盖了对象关系映射、SessionFactory、集合映射、级联操作、Session方法以及事务处理等多个关键知识点。" 1. 对象关系映射(ORM)是Hibernate的核心特性,它将数据库的表映射为Java对象,使得开发人员可以使用面向对象的方式来操作数据。在问题1中提到的关系数据模型与对象模型之间的匹配关系,A) 表对应类,B) 记录对应对象,C) 表的字段对应类的属性都是正确的映射关系。D) 表之间的参考关系对应类之间的关联关系,通常表现为一对一、一对多、多对一或多对多的关联。 2. SessionFactory是Hibernate的重要组件,它负责生成Session对象,管理数据库连接。问题2中,正确的说法是B) 一个SessionFactory对象对应一个数据库存储源和C) SessionFactory是重量级的,不建议频繁创建。A) 错误,因为SessionFactory不应该每次事务都创建。D) SessionFactory的load()方法用于加载持久化对象,但通常用于按主键获取已存在的对象。 3. 在Hibernate的映射文件中,集合属性如Set、List等通常使用<set>或<list>元素来映射,如题目3所示。因此,正确答案是A)。 4. cascade属性用于控制集合中的对象是否跟随主对象进行级联操作。如果希望在保存或更新主对象时也保存或更新集合中的对象,应设置cascade属性为'save-update'。所以,问题4的答案是D)。 5. Session是与数据库交互的主要接口,包含了如A) load()用于按主键加载对象,B) save()用于保存新对象,C) delete()用于删除对象,D) update()用于更新对象等方法。E) open()和F) close()不是Session的标准方法,通常用于Session工厂。 6. 问题6涉及事务和对象的缓存机制。在同一事务内,使用load()方法加载相同主键的两个对象,由于Hibernate的缓存机制,它们会指向同一个实例,因此输出为true。答案是C)。 7. 问题7展示了对Customer对象的name属性进行多次修改的情况。由于在事务开始后(7. tx = session.beginTransaction())进行修改,但在事务提交前没有显示调用update()方法,所以修改不会立即反映到数据库中。因此,代码不会抛出异常,也不会打印任何内容,直到事务提交或回滚。题目中给出的答案B)是错误的,实际结果取决于后续的事务处理代码。 这些面试题涉及到的Hibernate知识点包括:ORM映射、SessionFactory管理、集合映射、级联操作、Session方法的使用以及事务处理。理解并熟练掌握这些内容对于在面试中展示对Hibernate的深入理解至关重要。