1. Set映射
<set name="映射的类的名字例如com.hibernate.Student" table="表名">
<key>
<column name="表中的外键名称"/>
</key>
<element column="你所需要的表中的字段名" type="映射类型"/>
</set>
例如父子表关系配置:
<set name="childDesignTaskMain" cascade="none" inverse="true" lazy="false" fetch="select">
<key column="designTaskMainIdParent" />
<one-to-many class="com.targ.projectManager.designtask.domain.DesignTaskMain"/>
</set>
2. List映射
List映射用到的List是有顺序的结构,因此需要在所映射的表中设一个字段用于进行顺序标记,需在表中加入以下字
段'Ind' int(10) unsigned default NULL
<list name="映射的类的名字例如com.hibernate.Student" table="表名" inverse="false"
cascade="all" fetch="join">
<key>
<column name="cno"/>
</key>
<index column="Ind"/>
<one-to-many class="对应的关联类的名字例如com.hibernate.Course"/>
</list>
3. Bag映射
Bag并不是Java中的接口,它是Hibernate提供的集合。Bag中可以有重复的元素,但是Bag中的元素没有顺序。
<bag name="映射的类的名字例如com.hibernate.Student" table="" inverse="false" cascade="all">
<key>
<column name="主键"/>
</key>
<one-to-many clas="对应的关联类的名字例如com.hibernate.Course">
</bag>
inverse="false",表示由一的一端维护级联操作;
例如:
<bag name="designTaskChildList" cascade="all" inverse="false" lazy="false" fetch="select">
<key>
<column name="designTaskMainId"></column>
</key>
<one-to-many class="com.targ.projectManager.designTaskChild.domain.DesignTaskChild"
not-found="ignore"/>
</bag>
在对应的关联类的配置文件要加入以下信息
<many-to-one name="designTaskMain" class="com.targ.projectManager.designtask.domain
.DesignTaskMain"not-found="ignore" insert="false" update="false" lazy="false"
fetch="select">
<column name="designTaskMainId" />
</many-to-one>
designTaskMain为该类中的变量名
designTaskMainId为数据库中的属性名
如果有大量的重复数据,<bag>标签的效率会比较低,它在更新数据时采用的是先删除要更新的数据,然后插入
数据。使用<idbag>标签可以避免这种情况。
4. <idbag>
首先在数据库中增加字段
'bagid' int(10) unsigned default NULL COMMENT 'bagid'
<idbag name="映射的类的名字例如com.hibernate.Student" table="" cascade="save-update">
<collection-id column="bagid" type="integer">
<generator class="increment"></generator>
</collection-id>
<key>
<column name="id"/>
</key>
<element column="cname" type="string"/>
</idbag>
可参考:http://www.360doc.com/content/09/0210/22/18042_2510021.shtml
5. Map映射
Map是JAVA的一个接口,它是一种重要的集合,它使用key/value方式存储数据;
Map具有较高的存取性能,不允许存放重复的key值但允许有重复的value值;
Map映射需要增加一个KeyName字段记录Key的值。
<map name="映射的类的名字例如com.hibernate.Student' table="">
<key column=""/>
<intdex column="keyname" type="string"/>
<element column="cname" type="string"/>
</map>
6. 参考:http://www.blogjava.net/lyyb2001/archive/2008/12/10/245497.html
http://ryxxlong.iteye.com/blog/626416
http://hi.baidu.com/fytcm/blog/item/0e16a0332f399948ac4b5f0d.html