Hibernate面试必备:选择题解析

需积分: 9 0 下载量 22 浏览量 更新于2024-09-14 收藏 35KB DOC 举报
"Hibernate面试测试题" 在面试中,熟悉Hibernate框架是至关重要的,因为它是一个流行的Java ORM(对象关系映射)工具,简化了数据库操作。下面是对这些测试题的详细解释: 1. 关系数据模型与对象模型之间的匹配关系: - A:表对应类 —— 在Hibernate中,数据库中的每个表都映射到一个Java类。 - B:记录对应对象 —— 表中的每一行记录映射到类的一个实例或对象。 - C:表的字段对应类的属性 —— 表的列对应类的成员变量或属性。 - D:表之间的参考关系对应类之间的依赖关系 —— 外键关系映射为类之间的关联,如一对一、一对多、多对一和多对多。 2. SessionFactory的相关知识: - A:不正确,SessionFactory不应为每个事务创建,它应该在整个应用程序生命周期内保持单例。 - B:正确,SessionFactory与特定的数据库连接配置相关联。 - C:正确,由于创建SessionFactory代价较高,因此建议全局范围内只创建一个。 - D:SessionFactory的load()方法用于根据主键加载持久化对象。 3. Hibernate映射: - A:正确,<set>元素用于映射集合作为属性,如Set类型的orders。 - B:不正确,<one-to-many>用于映射一对一到多的关系,不是集合属性。 - C:不正确,<many-to-one>用于映射多对一的关系,不是集合属性。 - D:不正确,<property>用于映射基本类型或简单引用属性,不是集合。 4. <set>元素的cascade属性: - A:none —— 不进行级联操作。 - B:save —— 这个选项不是标准的Hibernate级联操作。 - C:delete —— 级联删除。 - D:save-update —— 级联保存和更新,如果希望Hibernate自动保存或更新集合中的对象,应设置为这个值。 5. Session的方法: - A:load() —— 加载对象。 - B:save() —— 保存新对象。 - C:delete() —— 删除对象。 - D:update() —— 更新对象。 - E:open() —— 不是Session的方法,应该是openSession()。 - F:close() —— 关闭Session。 6. 代码执行结果: - A:不会抛出异常,因为load()使用相同的主键加载对象,会返回缓存中的同一个对象。 - B:false —— 错误,因为c1和c2都是指向缓存中同一个对象的引用,所以它们相等。 - C:true —— 正确。 7. 对Customer的name属性修改: - 这段代码没有显示完整的修改过程,但假设在修改后调用了flush()和commit()来保存更改。在Hibernate中,如果在同一个事务内多次修改同一个对象的属性,最后提交的值会被持久化。 理解这些概念和API对于掌握Hibernate至关重要,不仅有助于面试,还能提高实际开发中的工作效率。