Hibernate映射文件详解:cascade关系、默认加载风格和schema配置

需积分: 9 1 下载量 13 浏览量 更新于2024-09-15 1 收藏 57KB DOC 举报
Hibernate 映射文件详解 Hibernate 映射文件是 Hibernate 框架中一个非常重要的组件,用于定义对象关系型数据库(Object-Relational Mapping,ORM)中对象与数据库表之间的映射关系。在 Hibernate 中,映射文件通常以 `.hbm.xml` 结尾,用于描述对象与数据库表之间的映射关系。 **级联(Cascade)关系** 级联关系是 Hibernate 映射关系中一个非常重要的概念。它指的是当主控方执行操作时,关联对象(被动方)是否同步执行同一操作。例如,当用户(TUser)被更新或者删除时,其所关联的组(TGroup)不应被修改或者删除,因此,级联关系设置为 none。当设为 all 时,一旦删除了一个 TGroup,所有在这个 TGroup 内的用户都会被删除。 在 Hibernate 中,级联关系可以设置为以下几种: * all:所有情况下均进行级联操作。 * none:所有情况下均不进行级联操作。 * save-update:在执行 save-update 时进行级联操作。 * delete:在执行 delete 时进行级联操作。 **映射文件的基本结构** 一个基本的 Hibernate 映射文件通常包括以下几个部分: * `hibernate-mapping`:根元素,用于指定 Hibernate 映射文件的版本和 schema 名称。 * `default-access`:用于指定 Hibernate 用来访问属性的策略,默认为 `property`。 * `default-lazy`:用于指定未明确注明 lazy 属性的 Java 属性和集合类,默认为 `true`。 * `schema`:用于指定映射的表所在的 schema 名称。 * `default-cascade`:用于指定默认的级联风格,默认为 `none`。 * `auto-import`:用于指定是否在查询语言中可以使用非全限定名的类名,默认为 `true`。 * `package`:用于指定一个包前缀。 **unsaved-value** unsaved-value 是一个可选的属性,用于指定一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。这可以把这种实例和从以前的 session 中装载过(可能又做过修改)但未再次持久化的实例区分开来。 在 Hibernate 中,unsaved-value 可以设置为一个字段判断(sensible)的值,例如,使用一个 timestamp 字段来标志实例的创建时间。 **总结** Hibernate 映射文件是一个非常重要的组件,用于定义对象与数据库表之间的映射关系。级联关系是 Hibernate 映射关系中一个非常重要的概念,用于指定当主控方执行操作时,关联对象(被动方)是否同步执行同一操作。映射文件的基本结构包括 `hibernate-mapping`、`default-access`、`default-lazy`、`schema`、`default-cascade`、`auto-import` 和 `package` 等部分。unsaved-value 是一个可选的属性,用于指定一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。