Hibernate学习8 -- hibernate映射文件5 -- property元素

来源:互联网 发布:淘宝网天猫 编辑:程序博客网 时间:2024/05/29 04:45

元素为类定义了一个持久化的,JavaBean风格的属性。

l 可使用的常见属性如下:

name – 对应类的属性名称

type – 指定属性的类型,一般情况下可以不用指定,由hibernate自动匹配(可参考文档中的有关说明)

length – 指定长度

column–指定属性所对应的数据库字段的名称,如果不指定,就是属性的名称

元素属性介绍:

clip_image002

1) name: 属性的名字,以小写字母开头。

2) column (可选 - 默认为属性名字): 对应的数据库字段名。 也可以通过嵌套的元素指定。

3) type (可选): 一个Hibernate类型的名字。

4) update, insert (可选 - 默认为 true) : 表明用于UPDATE 和/或 INSERT 的SQL语句中是否包含这个被映射了的字段。这二者如果都设置为false 则表明这是一个“外源性(derived)”的属性,它的值来源于映射到同一个(或多个) 字段的某些其他属性,或者通过一个trigger(触发器)或其他程序生成。

5) formula (可选): 一个SQL表达式,定义了这个计算 (computed) 属性的值。计算属性没有和它对应的数据库字段。

6) access (可选 - 默认值为 property): Hibernate用来访问属性值的策略。

7) lazy (可选 - 默认为 false): 指定 指定实例变量第一次被访问时,这个属性是否延迟抓取(fetched lazily)( 需要运行时字节码增强)。

8) unique (可选): 使用DDL为该字段添加唯一的约束。 同样,允许它作为property-ref引用的目标。

9) not-null (可选): 使用DDL为该字段添加可否为空(nullability)的约束。

10) optimistic-lock (可选 - 默认为 true): 指定这个属性在做更新时是否需要获得乐观锁定(optimistic lock)。 换句话说,它决定这个属性发生脏数据时版本(version)的值是否增长。

11) generated (可选 - 默认为 never): 表明此属性值是否实际上是由数据库生成的。

注:

类型名称可以是如下几种:

n Hibernate基本类型名

比如:integer, string, character,date, timestamp, float, binary, serializable, object, blob

n Java类型

int, float,char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob

n 一个可以序列化的Java类的名字

n 一个自定义类型的类的名字

access属性用来让你控制Hibernate如何在运行时访问属性。在默认情况下, Hibernate会使用属性的get/set方法对(pair)。如果你指明access="field", Hibernate会忽略get/set方法对,直接使用反射来访问成员变量。你也可以指定你自己的策略, 这就需要你自己实现org.hibernate.property.PropertyAccessor接口, 再在access中设置你自定义策略类的名字。