Hibernate笔试题与解析

需积分: 3 2 下载量 136 浏览量 更新于2024-09-18 收藏 176KB DOC 举报
"这篇资料包含了Hibernate的相关笔试题目和答案,主要涵盖了数据访问层的责任、数据持久化的概念、Hibernate的核心特性、配置文件的内容、关系映射的属性以及级联操作的运用,适合于学习和复习Hibernate知识。" 1) 数据访问层(Data Access Layer)在三层架构中的责任主要是数据的增删改查操作(B),即CRUD(Create, Read, Update, Delete)。它负责与数据库交互,提供数据存储和检索的功能,但不涉及业务逻辑的描述(C)或页面展示和控制转发(D)。实体类(A)通常在模型层(Model Layer)进行定义。 2) 数据持久化是指将内存中的数据状态转换为能够长期存储的形式,即使在系统关闭后数据仍然存在(B)。瞬时状态(A)指的是在内存中但未被持久化的数据,而持久状态(B)则相反。数据可以在两者之间转换(C),而实现这个转换的过程就是数据持久化(D)。选项D描述错误,因为数据持久化并非简单的“机制”,而是一个过程。 3) Hibernate是一个流行的Java持久化框架,它实现了对象-关系映射(ORM)(A),简化了与数据库的交互(D)。它是一种数据持久化技术,但并不是JDBC的替代品(C),而是对其的一种补充和优化,使得开发人员可以更专注于业务逻辑而不是底层的SQL操作。 4) Hibernate的配置文件(hibernate.cfg.xml或相应的配置类)包含了数据库连接信息(D),如数据库URL、用户名和密码,以及show_sql等参数配置(C),用于控制日志输出。但是,它不包含具体的“对象-关系映射”信息(A)和实体间关联的配置(B),这些通常在.hbm.xml映射文件或者注解中定义。 5) Hibernate关系映射中,inverse属性用于定义关联的维护责任。当在<set>节点上声明inverse="true"(B)时,表示关联的维护由集合(多方)端负责,而在<one-to-many>节点上声明inverse属性(C)则是声明单方(一对一或一对多)是否负责关联维护。 6) 在Hibernate中,若希望删除客户时同时删除其所有订单,需要在关联映射上设置cascade属性。cascade="all"(B)会触发所有级别的级联操作,包括删除。而cascade="save-update"(A)只会在保存或更新客户时同步处理订单。设置多对一关联的inverse属性(C/D)与此目的无关,inverse主要用于控制关联的更新策略。 7) 关联配置中,<set>元素的inverse属性用于定义关联的维护方,而cascade属性指定级联操作。在一对多关联配置中,如果希望客户删除时自动删除关联的订单,inverse="false"表明客户是主控方,但cascade="true"不是正确的级联删除设置,应改为cascade="all"或"delete-orphan"。同时,<one-to-many>标签缺少结束标签`</one-to-many>`,这是XML语法错误。 通过这份资料,学习者可以深入理解Hibernate的核心概念、配置细节以及关系映射的管理,有助于提升在实际项目中的应用能力。