一对多的关系映射
在一的一方配置文件中将会配置set节点信息:
*.hbm.xml配置文件中set节点的属性:
Lazy:默认是true 即使用延迟加载,false表示即时加载;
Order-by:一的一方set集合内多的一方实体集合的排序方式 默认是主键排序 但可以更改;
Cascade:是否使用级联操作;配置方法:cascade的值有如下几个;
all: 所有情况下均进行关联操作,即save-update和delete。
none: 所有情况下均不进行关联操作。这是默认值。
save-update: 在执行save/update/saveOrUpdate时进行关联操作。
delete: 在执行delete 时进行关联操作。
all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点
Inverse:反转。True表示由对方负责控制,false表示由自己控制。
级联删除:(在一的一方的配置文件中set节点进行配置)
cascade的值使用all表示对所有操作都级联;
把set节点的属性inverse的值改为true:
就可以实现级联删除了,即删除一的一方后,在多的一方中引用到一的一方的主键的全部记录将会被删除
一对多中的‘一’
vo
package org.sunny.shop.vo; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Set; public class Category { private int cid; private String cname; private Date dateinsert ; private Date dateupdate ; //利用集合来与多的一方关联 private Set<Category2th> category2thSet; /* * *剩下的为setter、getter方法 * */ }
Category.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="org.sunny.shop.vo.Category" table="category"> <id name="cid" column="cid"> <generator class="identity" /> </id> <property name="cname" /> <property name="dateinsert" /> <property name="dateupdate" /> <!-- 配置二级分类的集合 --> <set order-by="csid" name="category2thSet" lazy="false" cascade="all" inverse="true"> <key column="cid"/> <one-to-many class="org.sunny.shop.vo.Category2th"/> </set> </class> </hibernate-mapping>
一对多中的‘多’
vo
package org.sunny.shop.vo; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Set; public class Category2th { private int csid; private String csname; // 分类添加时间 private Date dateinsert; // 分类更新时间 private Date dateupdate; private Category category; //用vo类与一对多中的‘一’关联 private Set<Product> productSet; /* * *剩下的是setter、getter方法 * */ }
Category2th.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="org.sunny.shop.vo.Category2th" table="categorysecond"> <id name="csid" column="csid"> <generator class="identity" /> </id> <property name="csname"/> <property name="dateinsert" /> <property name="dateupdate" /> <!-- 二级分类与一级分类的关联 --> <many-to-one name="category" lazy="false" class="org.sunny.shop.vo.Category"> <column name="cid"></column> </many-to-one> </class> </hibernate-mapping>
时间: 2024-11-07 02:29:30