组件(Component)是一个被包含的对象,在持久化的过程中,它被当作值类型,而并非一个实体的引用(即数据库中没有表与该属性对应,但该类的属性要之久保存的。)。举个例子, 你对人(Person)这个概念可以像下面这样来建模:
public class Person { private java.util.Date birthday; private Name name; private String key; public String getKey() { return key; } private void setKey(String key) { this.key=key; } public java.util.Date getBirthday() { return birthday; } public void setBirthday(java.util.Date birthday) { this.birthday = birthday; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } ...... ...... }
public class Name { char initial; String first; String last; public String getFirst() { return first; } void setFirst(String first) { this.first = first; } public String getLast() { return last; } void setLast(String last) { this.last = last; } public char getInitial() { return initial; } void setInitial(char initial) { this.initial = initial; } }
在持久化的过程中,姓名(Name)可以作为人(Person)的一个组件。需要注意的是:你应该为姓名的持久化属性定义getter和setter方法,但是你不需要实现任何的接口或申明标识符字段。
以下是这个例子的Hibernate映射文件:
<class name="eg.Person" table="person"> <id name="Key" column="pid" type="string"> <generator class="uuid"/> </id> <property name="birthday" type="date"/> <component name="Name" class="eg.Name"> <!-- class attribute optional --> <property name="initial"/> <property name="first"/> <property name="last"/> </component> </class>
人员(Person)表中将包括pid
, birthday
, initial
, first
和 last
等字段。
就像所有的值类型一样, 组件不支持共享引用。 换句话说,两个人可能重名,但是两个Person对象应该包含两个独立的Name对象,只不过这两个Name对象具有“同样”的值。 组件的值可以为空,其定义如下。 每当Hibernate重新加载一个包含组件的对象,如果该组件的所有字段为空,Hibernate将假定整个组件为空。 在大多数情况下,这样假定应该是没有问题的。
组件的属性可以是任意一种Hibernate类型(包括集合, 多对多关联, 以及其它组件等等)。嵌套组件不应该被当作一种特殊的应用(Nested components should not be considered an exotic usage)。 Hibernate倾向于支持细致的(fine-grained)对象模型。
<component> 元素还允许有 <parent>
子元素,用来表明component类中的一个属性是指向包含它的实体的引用。
<class name="eg.Person" table="person"> <id name="Key" column="pid" type="string"> <generator class="uuid"/> </id> <property name="birthday" type="date"> <component name="Name" class="eg.Name" unique="true"> <parent name="namedPerson"/> <!-- reference back to the Person --> <property name="initial"/> <property name="first"/> <property name="last"/> </component> </class>
以上摘抄于Hibernate文档-->第 8 章 组件(Component)映射-->8.1. 依赖对象(Dependent objects)
相关推荐
在 Hibernate 中,组件之间的关联是实现对象模型与数据库表之间映射的关键部分,它包括了一对一、一对多、多对一、多对多等多种关联类型。本篇文章将深入探讨 Hibernate 组件之间的关联机制及其应用。 **一对一关联...
在Hibernate中,组件(Component)是一种特殊的关联关系,它将一个类的实例嵌入到另一个类中,就像Java中的内部类一样。组件可以是任何复杂的对象结构,如地址、时间戳等,它们作为主对象的一部分存储在数据库中。...
"Hibernate组件映射代码详解" titre的知识点: * Hibernate组件映射代码的概念和实现 * 组件关联映射的属性和特点 * Hibernate组件映射的优点和应用场景 描述的知识点: * Hibernate组件映射代码的详细解释 *...
在`java组件——hibernate.ppt`和`HibernatePractice`中,可能会包含关于如何在实际项目中设置这些映射和继承策略的示例。例如,如何配置 XML 映射文件(hbm.xml)或使用注解进行映射,以及如何在代码中操作这些关联...
《Hibernate组件映射:Annotation与XML的融合》 在Java持久化领域,Hibernate是一个不可或缺的框架,它提供了强大的对象关系映射(ORM)能力。本文将深入探讨Hibernate中的组件映射,包括使用注解(Annotation)和...
这个教程可能涵盖了如何在MVC(Model-View-Controller)架构中整合这三个组件,并且重点在于第六部分的数据关联实现。接下来,我们将深入探讨这些关键知识点。 **Hibernate框架**:Hibernate是一个流行的开源Java...
### Hibernate中的相关组件介绍 #### 一、Hibernate配置文件(`hibernate.cfg.xml`) 在Hibernate框架中,默认的配置文件被命名为`hibernate.cfg.xml`。此配置文件是Hibernate初始化过程中的关键组成部分,它定义...
在Java的持久化框架中,Hibernate是一个非常重要的组件,它为开发者提供了强大的对象关系映射(ORM)功能,使得在数据库操作上可以采用面向对象的方式。本教程将深入探讨Hibernate中的四种主要数据关联:一对一(11...
在Java的持久化框架中,Hibernate是一个非常重要的组件,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地将数据库操作转化为面向对象的编程。本实例将深入探讨Hibernate中的三种基本关联关系:一对一...
通过阅读`Hibernate--Criteria`中的源码,你可以深入了解Criteria API的工作原理,以及如何与其他Hibernate组件(如SessionFactory、Session和Query)协同工作。理解源码能帮助你在实际项目中更好地应用和优化...
8. **延迟加载**:Hibernate的懒加载策略可以在需要时才加载关联对象,提高系统性能。 9. **事件监听器**:允许自定义事件监听器来扩展Hibernate的功能,如在对象保存或更新时触发某些操作。 10. **类型转换**:...
描述中反复提到"hibernate的核心jar包在这",这暗示了提供的压缩文件`hibernate-jar`可能包含了Hibernate框架的核心组件,例如`hibernate-core.jar`。这个核心JAR文件通常包括以下关键组件: 1. **SessionFactory**...
Struts、Hibernate和JDBC是Java Web开发中的三个重要组件,它们各自负责应用程序的不同层面。在构建复杂的Web应用时,通常会结合使用这些技术来实现高效的数据管理。 Struts是MVC(Model-View-Controller)框架的一...
Hibernate的核心组件包括Configuration、SessionFactory、Session、Transaction和Query。Configuration负责读取配置文件并初始化SessionFactory,SessionFactory是线程安全的,用于创建Session实例。Session是与...
hibernate3.jar是主要的Hibernate库文件,包含了框架的核心组件,包括Entity管理、Session接口、Transaction管理、Query服务等。这个单一的JAR文件使开发人员能够快速地在项目中集成Hibernate3,而不必逐个添加众多...
在描述中提到的“核心jar,亲测可用,跑demo是够用了”,这表明这些jar文件包含了运行Hibernate与MySQL交互所需的基本组件,并且已经有人验证过它们在演示或测试环境中可以正常工作。通常,这包括Hibernate的核心库...
此外,还涵盖了如何使用SessionFactory和Session对象,它们是Hibernate操作数据库的核心组件。 实体管理是Hibernate中的重要部分,书中会详细介绍如何定义实体类,使用注解来声明属性与数据库字段的映射,以及如何...
Hibernate 的配置文件是其核心组件之一,用于定义 Hibernate 的运行期参数。下面我们将详细介绍 Hibernate 配置文件的结构和内容。 一、hibernate.cfg.xml 文件 hibernate.cfg.xml 文件是 Hibernate 的基本配置...
二、核心组件解析 1. SessionFactory:它是Hibernate的主要工厂类,负责配置、加载和管理所有持久化类的元数据,创建Session实例。 2. Session:是与数据库交互的接口,负责保存、更新和删除实体对象,以及执行HQL和...
描述中提到"用的挺久了,挺全面的",暗示这个jar包可能包含了Hibernate的核心组件以及一些常用的扩展,比如支持DOM4J库,这是一个用于XML处理的Java库,常在Hibernate中用于读写XML配置文件。另外,还提及了"orcle...