Hibernate 映射文件 结构
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
column="full_content" type="string" generated="insert">
1. 主要元素配置
hibernate-mapping 有各种属性(P389),class也有各种属性(P390).
class里面也可以配置hibernate-mapping表示覆盖配置.
hibernate-mapping里面可以包含多个class,但是一般一个文件只配置一个class(表).
class里面id配置标识属性,其他使用property配置.
id和property都有各种 属性值可配置(P392)
2. id的生成器配置
上面主键配置中,generator表示主键生成器(P392).
3. property元素的属性配置(p394)
其中,generated熟悉配置该字段是否由数据库自动生成(通过触发器生成)
配置值为never:不由数据库生成
insert: insert时有数据库生成
always:insert和udpate时都由数据库生成.
配置的类中,在generated配置的值insert时,持久化类中对应的属性值不会插入到数据库中.
在配置的值为always时,持久化类中对应的属性值 不会 被insert/update到数据库.
4. 映射集合属性
Hibernate要求,之久话集合字段必须声明为 接口.
在配置映射文件时,可以使用list,set,map,array等元素(相当于代替普通的property元素),
来配置集合映射.
这些元素可以有下面的属性:
table 指定保存集合属性值的表名,如果没有指定该值,则表名和name相同.
column:指定外键的列名
on-delete指定外键约束是否打开数据库级别的级联删除.
property-ref:指定外键引用的字段是否为原表的主键.
update:指定外键列是否可更新
unique:指定外键列是否具有唯一约束
其他参考(P398)
5. 映射组件
7. 映射集合,该集合的 元素 为 组件,元素数据来自集合的表,组件字段是集合表中的.
普通map中一个key对应一个字段,而使用组件作为元素,则一个key可以对应多个字段.
8. 映射集合,该集合的 key 为 组件, 使用 composite-map-key
组件字段是集合表中的.
9. 组件作为复合主键
此时,组件必须满足:
(1) 实现 java.io.serializable接口
(2) 需要正确重写equals()和hashCode()方法
一个映射配置中,id和composite-id只能出现一次(因为一个表只能有一个主键)