hibernate映射文件中的class元素介绍



hibernate映射文件中的class元素介绍。该元素有什么作用?怎么用?

使用class元素来定义一个持久化类图示:

使用class元素来定义一个持久化类:

使用class元素来定义一个持久化类:

1) class元素name (可选): 持久化类(或者接口)Java全限定名。 当该属性不存在,Hibernate将认为这是一个非POJO的实体映射。

2) class元素nametable (可选 – 默认是类的非全限定名): 与数据库表名对应。

3) class元素namediscriminator-value (可选 – 默认和类名一样): 一个用于区分不同的子类的值,在多态行为时使用。它可以接受的值包括 null 和 not null。

4) class元素namemutable (可选,默认值为true): 表明该类的实例是可变的或者不可变的。

5) schema (可选): 覆盖在根元素中指定的schema名字。

6) catalog (可选): 覆盖在根元素中指定的catalog名字。

7) proxy (可选): 指定一个接口,在延迟装载时作为代理使用。 你可以在这里使用该类自己的名字。

8) dynamic-update (可选, 默认为 false): 指定用于UPDATE 的SQL将会在运行时动态生成,并且只更新那些改变过的字段。

9) class元素namedynamic-insert (可选, 默认为 false): 指定用于INSERT的 SQL 将会在运行时动态生成,并且只包含那些非空值字段。

(10) class元素nameselect-before-update (可选, 默认为 false): 指定Hibernate除非确定对象真正被修改了(如果该值为true-译注),否则不会执行SQL UPDATE操作。在特定场合(实际上,它只在一个瞬时对象(transient object)关联到一个 新的session中时执行的update()中生效),这说明Hibernate会在UPDATE 之前执行一次额外的SQL SELECT操作,来决定是否应该执行 UPDATE。

(11) polymorphism(多态) (可选, 默认值为 implicit (隐式) ): 界定是隐式还是显式的使用多态查询(这只在Hibernate的具体表继承策略中用到-译注)。

(12) class元素namewhere (可选) 指定一个附加的SQLWHERE 条件, 在抓取这个类的对象时会一直增加这个条件。

(13) lazy (可选): 通过设置lazy=”false”, 所有的延迟加载(Lazy fetching)功能将被全部禁用(disabled)。


(14) entity-name (可选,默认为类名): Hibernate3允许一个类进行多次映射( 前提是映射到不同的表),并且允许使用Maps或XML代替Java层次的实体映射 (也就是实现动态领域模型,不用写持久化类-译注)。 更多信息请看第 4.4 节 “动态模型(Dynamic models)” and 第 18 章 XML映射。

(15) persister (可选): 指定一个定制的ClassPersister。

(16) batch-size (可选,默认是1) 指定一个用于 根据标识符(identifier)抓取实例时使用的”batch size”(批次抓取数量)。

(17) optimistic-lock(乐观锁定) (可选,默认是version): 决定乐观锁定的策略。

(18) check (可选): 这是一个SQL表达式, 用于为自动生成的schema添加多行(multi-row)约束检查。

(19) rowid (可选): Hibernate可以使用数据库支持的所谓的ROWIDs,例如: Oracle数据库,如果你设置这个可选的rowid, Hibernate可以使用额外的字段rowid实现快速更新。ROWID是这个功能实现的重点, 它代表了一个存储元组(tuple)的物理位置。

(20) subselect (可选): 它将一个不可变(immutable)并且只读的实体映射到一个数据库的 子查询中。当你想用视图代替一张基本表的时候,这是有用的,但最好不要这样做。更多的介绍请看下面内容。

(21) abstract (可选): 用于在的继承结构 (hierarchies)中标识抽象超类。

常用属性如下:

name属性 – 实体类的类名

table属性 – 被映射到数据库表的名称

可以包含的常见子元素:

id 属性– 主键定义

property – 属性定义

关系映射定义(一对多、多对一等)