hibernate学习笔记
### Hibernate学习笔记:对象/关系数据库映射(二)——集合映射 #### 1. 集合映射概述 在对象/关系映射(ORM)领域中,Hibernate 是一个非常强大的工具,它能够帮助开发者高效地进行 Java 对象与数据库记录之间的转换。对于集合属性的处理,Hibernate 提供了丰富的映射方式来支持不同类型的集合。 集合映射主要包括值类型的集合和实体类型的集合。值类型的集合是指集合中的元素为简单类型(如基本数据类型和 String 类型)。实体类型的集合则包含其他实体对象,这类集合可以表示一对多或多对多的关系。 #### 1.1 集合属性 集合属性主要分为以下两类: - **单纯的集合属性**:例如 List、Set 或数组等。这些集合通常用来存储同类型的元素。 - **Map 结构的集合属性**:其中每个值都有一个对应的 Key 映射。这种类型的集合常用于存储键值对数据。 #### 1.2 集合映射的元素 Hibernate 支持多种集合映射元素,包括但不限于: - **List**:用于映射有序且可能包含重复元素的 List 集合。 - **Set**:用于映射无序且不包含重复元素的 Set 集合。 - **Map**:用于映射 Map 集合,其键值对的形式存储数据。 - **Array**:用于映射数组形式的数据。 - **Bag**:用于映射无序且可能包含重复元素的集合。 - **Idbag**:类似于 Bag,但是为集合中的每个元素添加了一个唯一的标识符,以方便查询。 值得注意的是,在 Hibernate 中,集合属性只能声明为接口类型,而不是具体的实现类。这是因为 Hibernate 在持久化实例时,会自动将应用程序中的集合实现类替换为其自身的集合实现类,以便于更好地控制持久化过程。 #### 1.1.1 Set 集合映射 Set 集合是一种无序且不允许重复元素的集合。在 Hibernate 中,可以通过 `<set>` 标签来配置 Set 集合的映射。下面详细介绍 `<set>` 标签的各个属性: - **name**:必须指定的属性,表示集合的名称。 - **access**:可选属性,指定访问策略。 - **table**:可选属性,默认为集合属性的名称,表示关联的数据库表。 - **schema**:可选属性,默认为无,表示关联的数据库模式。 - **catalog**:可选属性,默认为无,表示关联的数据库目录。 - **subselect**:可选属性,用于懒加载时定义一个 SQL 子查询。 - **lazy**:可选属性,默认为 `true`,表示是否懒加载集合。 - **sort**:可选属性,默认为 "unsorted",表示集合的排序方式。 - **inverse**:可选属性,默认为 "false",表示是否反转关联。 - **mutable**:可选属性,默认为 "true",表示集合是否可变。 - **cascade**:可选属性,表示级联操作。 - **order-by**:可选属性,默认为无,表示排序依据。 - **where**:可选属性,默认为无,表示过滤条件。 - **batch-size**:可选属性,表示批处理大小。 - **outer-join**:可选属性,默认为 "auto",表示是否使用外连接。 - **fetch**:可选属性,默认为 "select",表示加载策略。 - **persister**:可选属性,表示持久化器类。 - **collection-type**:可选属性,表示集合类型。 - **check**:可选属性,默认为 "none",表示完整性检查。 - **optimistic-lock**:可选属性,默认为 "true",表示是否支持乐观锁。 - **node**:可选属性。 - **embed-xml**:可选属性,默认为 "true"。 在 `<set>` 元素内部还可以包含 `<key>` 标签,用于定义集合与主表的关联关系。`<key>` 标签包含的属性有: - **column**:可选属性,默认为无,表示关联的列名。 - **property-ref**:可选属性,默认为无,表示引用的属性。 - **foreign-key**:可选属性,默认为无,表示外键约束。 - **on-delete**:可选属性,默认为 "noaction",表示删除操作时的行为。 - **not-null**:可选属性,默认为无,表示是否允许为空。 - **update**:可选属性,默认为无,表示是否允许更新。 - **unique**:可选属性,默认为无,表示是否唯一。 通过以上详细的介绍,我们了解到 Hibernate 中如何进行集合映射及其相关的配置选项。这些配置项可以帮助开发者更加灵活地管理 Java 应用程序中的集合数据,并有效地将其映射到关系型数据库中。了解这些细节有助于开发者更好地掌握 Hibernate 的使用方法,提高开发效率和代码质量。
剩余68页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助