实体类
package cn.oneToMany;
import java.io.Serializable;
/**
* 学生
* @author Administrator
*
*/
public class Student implements Serializable{
private Long sid;
private String sname;
private String description;
public Long getSid() {
return sid;
}
public void setSid(Long sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
package cn.oneToMany;
import java.io.Serializable;
import java.util.Set;
/**
* 班级
* @author Administrator
*
*/
public class Classes implements Serializable{
private Long cid;
private String cname;
private String description;
private Set<Student> students;//一的一方写集合,
public Long getCid() {
return cid;
}
public void setCid(Long cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
映射文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.oneToMany.Student" table="student">
<id name="sid" column="sid" type="java.lang.Long" length="20">
<generator class="increment"></generator>
</id>
<property name="sname" type="java.lang.String" length="20"></property>
<property name="description" type="java.lang.String" length="200"></property>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.oneToMany.Classes" table="classes">
<id name="cid" type="java.lang.Long" length="20">
<column name="cid"></column>
<generator class="increment"></generator>
</id>
<property name="cname" type="java.lang.String" length="20"></property>
<property name="description" type="java.lang.String" length="200"></property>
<!--
set元素和类中的set集合对应
从外键的角度建立classes和student之间的关系
从类和类得角度建立classes和student之间的关系
cascade级联
inverse是用来维护关系的
要么是一对多的关系
要么是多对多的关系
谁来维护关系:invetse所在的映射文件对应的持久化对象维护关系
默认值是false 表示维护关系
true 表示不维护关系
-->
<set name="students" cascade="save-update">
<!--
key是用来描述外键的
column代表就是外键的名字
-->
<key>
<column name="cid"></column>
</key>
<!--
one-to-many 描述classes和哪个对象进行关联
-->
<one-to-many class="cn.oneToMany.Student"/>
</set>
</class>
</hibernate-mapping>
cascade属性值 描述
none 在保存、更新或删除当前对象时,忽略其他关联的对象,是cascade属性的默认值
save-update 当通过Session的save()、update()以及savsOrUpdate()方法来保存或者更新当前对象时
级联保存所有关联的新建的临时对象,并且级联更新所有关联的游离对象
delete 当通过Session的delete()方法删除当前对象时,级联删除所有关联的对象
all 包含save-update以及delete的行为,此外,对当前对象执行evict()或lock()操作时,也会对
所有关联的持久化对象执行evict()或lock()操作
delete_orphan 删除所有和当前对象解除关联关系的对象
all-delete_orphan 包含all和delete-orphan的行为