many-to-one各属性含义
来源:互联网 发布:iphone5susb共享网络 编辑:程序博客网 时间:2024/04/28 07:54
通过many-to-one 元素,可以定义一种常见的与另一个持久化类的关联。
这种关系模型是多对一关联(实际上是一个对象引用-译注):这个表的一个外键引用目标表的 主键字段。
<many-to-one name="propertyName" <span class="co">(1)</span> column="column_name" <span class="co">(2)</span> class="ClassName" <span class="co">(3)</span> cascade="cascade_style" <span class="co">(4)</span> fetch="join|select" <span class="co">(5)</span> update="true|false" <span class="co">(6)</span> insert="true|false" <span class="co">(6)</span> property-ref="propertyNameFromAssociatedClass" <span class="co">(7)</span> access="field|property|ClassName" <span class="co">(8)</span> unique="true|false" <span class="co">(9)</span> not-null="true|false" <span class="co">(10)</span> optimistic-lock="true|false" <span class="co">(11)</span> lazy="true|proxy|false" <span class="co">(12)</span> not-found="ignore|exception" <span class="co">(13)</span> entity-name="EntityName" <span class="co">(14)</span> node="element-name|@attribute-name|element/@attribute|." embed-xml="true|false"/>
(1)name : 属性名。(2)column (可选): 外间字段名。它也可以通过嵌套的 <column> 元素指定。(3)class (可选 - 默认是通过反射得到属性类型): 关联的类的名字。(4)cascade(级联) (可选): 指明哪些操作会从父对象级联到关联的对象。(5)fetch (可选 - 默认为 select ): 在外连接抓取(outer-join fetching)和序列选择抓取(sequential select fetching)两者中选择其一。(6)update, insert (可选 - defaults to true ) 指定对应的字段是否包含在用于UPDATE 和/或 INSERT 的SQL语句中。如果二者都是false ,则这是一个纯粹的 “外源性(derived)”关联,它的值是通过映射到同一个(或多个)字段的某些其他属性得到 或者通过trigger(触发器)、或其他程序。(7)property-ref : (可选) 指定关联类的一个属性,这个属性将会和本外键相对应。 如果没有指定,会使用对方关联类的主键。(8)access (可选 - 默认是 property ): Hibernate用来访问属性的策略。(9)unique (可选): 使用DDL为外键字段生成一个唯一约束。此外, 这也可以用作property-ref 的目标属性。这使关联同时具有 一对一的效果。(10)not-null (可选): 使用DDL为外键字段生成一个非空约束。(11)optimistic-lock (可选 - 默认为 true ): 指定这个属性在做更新时是否需要获得乐观锁定(optimistic lock)。 换句话说,它决定这个属性发生脏数据时版本(version)的值是否增长。(12)lazy (可选 - 默认为 proxy ): 默认情况下,单点关联是经过代理的。lazy="true" 指定此属性应该在实例变量第一次被访问时应该延迟抓取(fetche lazily)(需要运行时字节码的增强)。lazy="false" 指定此关联总是被预先抓取。(13)not-found (可选 - 默认为 exception ): 指定外键引用的数据不存在时如何处理: ignore 会将数据不存在作为关联到一个空对象(null)处理。(14)entity-name (optional): 被关联的类的实体名。
cascade 属性设置为除了none 以外任何有意义的值, 它将把特定的操作传播到关联对象中。这个值就代表着Hibernate基本操作的名称, persist, merge, delete, save-update, evict, replicate, lock, refresh , 以及特别的值delete-orphan 和all ,并且可以用逗号分隔符 来合并这些操作,例如,cascade="persist,merge,evict" 或 cascade="all,delete-orphan" 。
一个典型的简单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> 的元素 里面映射所有关联的属性。
0 0
- many-to-one各属性含义
- many-to-one各属性含义
- many-to-one各属性含义
- many to one 各属性的含义
- many-to-one中的属性
- Hibernate <many-to-one属性的设置
- hibernate映射many-to-one 属性
- hiberante many-to-one fetch属性
- Hibernate------>many to one的属性值
- hibernate映射many-to-one 属性
- hibernate中hbm.xml<many-to-one><one-to-many>中一些属性详解
- <many to one>和<one to many>
- <many-to-one>和<one-to-many>
- hibernate many-to-one // one-to-many
- Hibernate小知识点(many to one ,one to one的属性解释)
- nhibernate one to one,one to many
- <many-to-one/>中各属性间应该有空格否则会抛出异常
- hibernate映射文件many-to-one元素属性
- 黑马程序员--反射应用和动态代理
- 结构体的内存存储细节
- [Pythong标准库]array——固定类型数据序列
- 实战c++中的vector系列--使用sort算法对vector进行排序(对vector<string>排序、使用稳定的排序std::stable_sort())
- JNDI与JDBC比较以及连接池的技术
- many-to-one各属性含义
- day2
- 【ShawnZhang】带你看数据结构——第十五课:哈夫曼树
- opencv的类型和方法在不同语言中的对应关系
- 击中击不中变换
- day3
- Android系统的基本架构
- jni_利用javah命令生成jni方法名
- day4 数组