Hibernate面试精华:常见问题与解答
4星 · 超过85%的资源 需积分: 9 69 浏览量
更新于2024-09-15
收藏 57KB DOC 举报
本文档是一份针对Hibernate面试的精选题库,涵盖了关系数据模型与对象模型的映射、SessionFactory的使用、映射文件的配置、级联操作、Session的方法以及常见编程操作的分析。以下是对这些知识点的详细解释:
1. 关系数据模型与对象模型的匹配关系:
- A) 表对应类:在Hibernate中,每个数据库表通常映射到一个Java类,这是最常见的映射方式。
- B) 记录对应对象:一条数据库记录对应一个Java对象实例,对象的状态反映了数据库中的数据。
- C) 表的字段对应类的属性:类的属性(字段)对应数据库表的列,属性的类型决定如何存储和检索数据。
- D) 表之间的参考关系对应类之间的依赖关系:通过外键关联的两个表,其Java类之间存在引用或依赖关系。
2. sessionFactory的相关知识点:
- A) 对于每个数据库事务,建议使用单例模式来管理SessionFactory,而不是每次事务创建一个新的对象。
- B) 一个SessionFactory通常对应一个数据库连接池,而非单个存储源。
- C) sessionFactory是重量级对象,频繁创建可能导致性能问题,所以应适当管理和复用。
- D) load()方法用于根据主键从数据库中加载已持久化的对象,但不是唯一的持久化操作方法。
3. Customer类中的Set<Orders>映射:
- 在hibernate.cfg.xml或Customer.hbm.xml中,可能需要使用`<set>`元素来映射,但具体选项缺失,可能对应的是`<set name="orders" cascade="save-update">`,其中`cascade="save-update"`表示在保存Customer时同时保存其Orders集合。
4. cascade属性选择:
- 如果希望在保存Customer时自动保存其Orders集合,`cascade`属性应该设置为`save-update`,表示在更新时保存关联对象。
5. Session的方法:
- A) load():根据主键加载对象。
- B) save():保存新对象或更新已有对象。
- C) delete():删除指定对象。
- D) update():更新对象的状态。
- E) open():打开Session,可能不常用,因为通常在SessionFactory中初始化Session。
- F) close():关闭当前Session。
6. 编程操作分析:
- 由于没有给出完整代码,但从提供的部分判断,1-4行是事务处理和对象加载。5行提交事务,6行关闭Session。
- 当使用load()两次加载同一个对象时,第二次会从缓存获取,而不是再次查询数据库。因此,`c1==c2`将打印true,因为它们指向的是同一个对象实例。
7. 修改Customer的name属性:
- 代码7-10展示了事务内对Customer对象的读取和修改。如果只执行了setName("newName"),没有保存,name的改变不会持久化到数据库。
面试者可能会考察应聘者对Hibernate基础概念的理解,如映射、事务管理、对象关系映射、级联操作和Session的使用等。在准备此类面试时,深入了解这些知识点并能灵活应用至关重要。
375 浏览量
2011-11-25 上传
2023-11-20 上传
2023-11-10 上传
2023-07-22 上传
2023-06-08 上传
2023-07-12 上传
2024-02-20 上传
2023-03-29 上传
junyh
- 粉丝: 0
- 资源: 6
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全