通过many-to-one元素,可以定义一种常见的与另一个持久化类的关联。 这种关系模型是多对一关联(实际上是一个对象引用-译注):这个表的一个外键引用目标表的 主键字段。
<many-to-one
name="propertyName"
column="column_name"
class="ClassName"
cascade="cascade_style"
fetch="join|select"
update="true|false"
insert="true|false"
property-ref="propertyNameFromAssociatedClass"
access="field|property|ClassName"
unique="true|false"
not-null="true|false"
optimistic-lock="true|false"
lazy="proxy|no-proxy|false"
not-found="ignore|exception"
entity-name="EntityName"
formula="arbitrary SQL expression"
node="element-name|@attribute-name|element/@attribute|."
embed-xml="true|false"
index="index_name"
unique_key="unique_key_id"
foreign-key="foreign_key_name"
/> name: 属性名。
column (可选): 外间字段名。它也可以通过嵌套的 <column>元素指定。
class (可选 - 默认是通过反射得到属性类型): 关联的类的名字。
cascade(级联) (可选): 指明哪些操作会从父对象级联到关联的对象。
fetch (可选 - 默认为 select): 在外连接抓取(outer-join fetching)和序列选择抓取(sequential select fetching)两者中选择其一。
update, insert (可选 - 默认为 true) 指定对应的字段是否包含在用于UPDATE 和/或 INSERT 的SQL语句中。如果二者都是false,则这是一个纯粹的 “外源性(derived)”关联,它的值是通过映射到同一个(或多个)字段的某些其他属性得到 或者通过trigger(触发器)、或其他程序生成。
property-ref: (可选) 指定关联类的一个属性,这个属性将会和本外键相对应。 如果没有指定,会使用对方关联类的主键。
access (可选 - 默认是 property): Hibernate用来访问属性的策略。
unique (可选): 使用DDL为外键字段生成一个唯一约束。此外, 这也可以用作property-ref的目标属性。这使关联同时具有 一对一的效果。
not-null (可选): 使用DDL为外键字段生成一个非空约束。
optimistic-lock (可选 - 默认为 true): 指定这个属性在做更新时是否需要获得乐观锁定(optimistic lock)。 换句话说,它决定这个属性发生脏数据时版本(version)的值是否增长。
lazy (可选 - 默认为 proxy): 默认情况下,单点关联是经过代理的。lazy="no-proxy"指定此属性应该在实例变量第一次被访问时应该延迟抓取(fetche lazily)(需要运行时字节码的增强)。 lazy="false"指定此关联总是被预先抓取。
not-found (可选 - 默认为 exception): 指定外键引用的数据不存在时如何处理: ignore会将行数据不存在视为一个空(null)关联。
entity-name (可选): 被关联的类的实体名。
formula (可选): SQL表达式,用于定义computed(计算出的)外键值。
cascade属性设置为除了none以外任何有意义的值, 它将把特定的操作传递到关联对象中。这个值就代表着Hibernate基本操作的名称, persist, merge, delete, save-update, evict, replicate, lock, refresh, 以及特别的值delete-orphan和all,并且可以用逗号分隔符 来组合这些操作,例如,cascade="persist,merge,evict"或 cascade="all,delete-orphan"。更全面的解释请参考第 10.11 节 “传播性持久化(transitive persistence)”. 注意,单值关联 (many-to-one 和 one-to-one 关联) 不支持删除孤儿(orphan delete,删除不再被引用的值).
一个典型的简单many-to-one定义例子:
<many-to-one name="product" class="Product" column="PRODUCT_ID"/>property-ref属性只应该用来对付遗留下来的数据库系统, 可能有外键指向对方关联表的是个非主键字段(但是应该是一个惟一关键字)的情况下。 这是一种十分丑陋的关系模型。比如说,假设Product类有一个惟一的序列号, 它并不是主键。(unique属性控制Hibernate通过SchemaExport工具进行的DDL生成。)
<property name="serialNumber" unique="true" type="string" column="SERIAL_NUMBER"/>那么关于OrderItem 的映射可能是:
<many-to-one name="product" property-ref="serialNumber" column="PRODUCT_SERIAL_NUMBER"/>当然,我们决不鼓励这种用法。
如果被引用的唯一主键由关联实体的多个属性组成,你应该在名称为<properties>的元素 里面映射所有关联的属性。
假若被引用的唯一主键是组件的属性,你可以指定属性路径:
<many-to-one name="owner" property-ref="identity.ssn" column="OWNER_SSN"/>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ailihx/archive/2007/11/30/1909105.aspx
分享到:
相关推荐
【hibernate配置步骤操作说明】 在Java开发中,Hibernate是一个流行的对象关系映射(ORM)框架,它简化了数据库操作。以下是如何在MyEclipse环境中配置Hibernate的详细步骤: 1. **安装MySQL数据库和工具** - ...
通过配置Hibernate的映射文件(*.hbm.xml),可以将数据库表与Java实体类关联,使得数据操作更加便捷。 **文件网盘系统**的核心功能包括文件上传、下载、删除、重命名等。这些操作通常涉及文件的读写、权限控制、...
2. Hibernate Extention,用来自动生成与那些*.hbm.xml对应的POJO,也就是根据那些对象关系映射的配置文件生成相应的class文件。 HibernateEx里面有一个hbm2java工具,就是用来根据些配置文件生成相应的POJO class。...
- **映射文件**:编写一个XML文件(如`person.hbm.xml`),描述`Person`类与数据库表之间的对应关系。 - **SessionFactory**:配置`hibernate.cfg.xml`文件,定义数据源和映射文件的位置等信息,然后使用`...
在Hibernate映射文件(hbm.xml)中,如果指定了not-null属性为true,那么对应的JavaBean字段就必须有值,否则会引发这个异常。 2. **Hibernate配置**: `Hibernate.cfg.xml`文件是Hibernate的配置文件,包含了...
- 映射文件:学习如何编写.hbm.xml文件,定义Java类与数据库表的映射关系。 - 实体类设计:理解实体类的设计原则,如标识符(ID)的设置,属性与字段的对应,以及关联关系的处理。 - CRUD操作:掌握基本的增删...
- **`.hbm.xml`文件**:Hibernate允许通过`.hbm.xml`文件来定义Java对象与数据库表之间的映射关系。这种映射方式让开发人员能够灵活地控制对象与数据库的映射细节,例如主键生成策略、字段映射规则等。 - **映射元素...
4. **实体类与映射文件**: 实体类代表数据库中的表,通过Hibernate的注解或XML映射文件(hbm.xml)来指定数据库表结构。 **二、Hibernate 源码关键组件解析** 1. **Query与Criteria API**: Query API用于编写HQL...
在UserInfo.hbm文件上选择"Synchronizer—Add"即可完成这项操作。通过这种方式,HibernateSyn插件为Hibernate应用程序的开发提供了极大的便利。 总的来说,HibernateSyn插件为Eclipse平台上的Hibernate应用程序开发...
Hibernate常用操作示例,包含详细注释说明,数据库初始化文件。使用和学习请参考:http://blog.csdn.net/daijin888888/article/details/51692942
同时,映射文件(.hbm.xml或注解形式)定义了对象与表的映射关系,包括字段对应、关联关系等。 总的来说,这份《Hibernate帮助文档》涵盖了Hibernate框架的核心概念、使用方法和最佳实践。通过深入学习和实践,Java...
- **实体映射文件(hbm.xml)**: 每个实体类通常对应一个映射文件,定义了类和表之间的映射关系。 3. **Spring与Hibernate整合** - **Spring的SessionFactoryBean**: Spring通过`SessionFactoryBean`来创建`...
以下是对Hibernate主键类型及其配置的详细说明: 1. **uuid.hex**: 这种生成器使用128位算法生成一个32位的字符串。由于其通用性,它适用于所有类型的数据库。在`.hbm.xml`映射文件中,你可以这样配置: ```xml ...
1. 映射文件(hbm.xml):定义对象与数据库表的映射关系,包括字段对应、主键生成策略等。 2. 注解映射:使用Java注解在类和属性上,简化XML配置,使得代码更简洁。 四、实体(Entity) 实体是ORM中的关键概念,...
Hibernate 使用 XML 文件(通常命名为 `*.hbm.xml`)或注解方式来定义对象与数据库表之间的映射关系,这个过程称为 ORM 映射。映射文件包含了实体类的属性与数据库字段的对应、主键生成策略、关联关系等信息。 四、...
在下载并解压后的"使用说明.txt"文件中,可能会包含如何将这些jar文件添加到项目的类路径、配置Hibernate的属性文件(如hibernate.cfg.xml)、创建实体类、编写映射文件(.hbm.xml)、使用Session工厂和Session进行...
《Hibernate配置文件详解》 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将深入探讨Hibernate的核心配置文件,了解其重要字段及其作用,帮助开发者更...
接下来,我们详细说明Hibernate配置文件的添加过程: 1. 解压下载好的hibernate.jar文件,这通常是在使用Hibernate之前必需的一步。 2. 在解压后的文件夹路径org\hibernate下,查找hibernate-configuration-3.0.dtd...
`hbm.xml`是Hibernate框架中用于描述对象关系映射(Object-Relational Mapping, ORM)配置的XML文件。它定义了Java对象与数据库表之间的映射规则,包括类到表的映射、属性到列的映射等,是实现持久化操作的基础。 #...