映射的基本元素和属性分析
映射的基本元素和属性分析
' 关系映射文件
<hibernate-mapping> 0
属性:
default-scheam 指定默认的数据表命名
package 指定包名
<class> 1
属性:
name设定类名
table 设定表名
schema指定默认的数据表命名
mutable 如果为false 等价于所有的property元素update属性为false 整个实例不会被更新
dynamic-insert 如果为true 等价于所有的property元素dynamic-update属性为true 保存对象时会动态生成updatet语句 包含所有不为null的值 默认false
dynamic-update 果为true 等价于所有的property元素dynamic-update属性为true 保存对象时会动态生成updatet语句 包含所有不为null的值 默认false
lazy 如果为true 表示使用延迟检索策略
子元素
<id>2子元素必须存在且只能存在一次<property>元素可以不存在,存在一次或者多次,必须先定义<id>元素再定义<property>元素 <id>用来设定持久化类的OID和表的主键映射
子元素
<generator>3 子元素制定对象标识符生成器,他负责为OID生成唯一从标识符
子元素
<property> 2
属性
name 指定持久化类的属性的名字
type指定Hibernate映射的类型 Hibernate映射类型是与SQL类型的桥梁
not-null 如果为true表明不允许为空
column 指定与类的属性映射的表的字段名
access 指定Hibernate访问持久化类的属性方式
property 默认值 通过get 和set方法
field 表明Hibernate运用java反射机制直接访问类的属性
insert 如果为false 在insert语句永远不插入该字段
update 如果为false 在update语句永远不插入该字段
dynamic-insert 如果为true 保存插入一个对象时会动态生成insert语句 包含所有不为null的值 默认false
dynamic-update如果为true 保存更新对象时会动态生成updatet语句 包含所有不为null的值 默认false
子元素
<meta> 3
属性:
class-description 指定类的javadoc
field-description 指定描述类属性的javadoc
interface 如果为true 表示为接口而不是类
implements 指定所实现的接口
generated-class 重新指定生成的类名
scope-class 指定类的修饰符 默认是public
scope-set 指定set方法的修饰符,默认是public
scope-get 指定get方法的修饰符,默认是public
scope-field 指定类的属性的修饰符,默认是private
use-in-toString 如果为true,指定在toString()的方法里包含此属性
gen-property 如果是false 不会在java类中生成此属性,默认为true
finder-method 指定find方法名
子元素
<column>3
属性:
name 该字段的名字
length 该字段的长度
not-null 如果为true 表示该字段不许为空
unique 如果为true 表示该字段有唯一约束
index 给一个或多个字段建立索引
unique-key 为多隔字段设定唯一约束
foreign-key 为外键约束命名 在<many-to-one>,<one-to-one>,<key>和<many-to-many>元素中包含foreign-key属性 如果没有定义该属性hbm2dll工具会自动为外键约束生成唯一的名字,在双向关联中inverse属性为true的一端不能设置foreign-key属性
sql-type 指定字段的sql类型
check 设定sql检查约束
<componenet>2 组件
属性:
name 持久化类的属性名
class 类名
元素:
<parent> 3 指定所属的整体类
<property>3 内部的属性
值类型 和 实体类型
值类型没有OID 不能被单独持久化 实体类可以单独持久化
' 当程序持久化组件的所属类的时候 组件类会自动持久化 Hibernate是不允许单独持久化组件类的
' 组件可以嵌套 可以关联其他持久化类 其他持久化类不能关联它
一个简单的示例
<!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<classname="ergal.Customer"table="CUSTOMERS"lazy="true">
<idname="id"type="long"column="ID">
<generatorclass="increment"/>
</id>
<propertyname="name"type="string">
<columnname="NAME"length="15"/>
</property>
<set
name="orders"
cascade="all-delete-orphan"
inverse="true"
>
<keycolumn="CUSTOMER_ID"/>
<one-to-manyclass="ergal.Order"/>
</set>
</class>
</hibernate-mapping>