1、一对多关系映射
一的一端:
Student.java
import java.util.HashSet;
import java.util.Set;
public class Student {
private String number;
private String name;
private String sex;
private Set<Course> courses=new HashSet<Course>();
//省略get,set方法
}
Student.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!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="com.mrw.test1.Student" table="Student">
<id name="number">
<generator class="assigned"></generator>
</id>
<property name="name"></property>
<property name="sex"></property>
<set name="courses">
<key column="student_number"></key>
<one-to-many class="com.mrw.test1.Course"/>
</set>
</class>
</hibernate-mapping>
多的一端:
Course.java
public class Course {
private Integer id;
private String coursename;
private Student student;
//省略get,set方法
}
Course.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!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="com.mrw.test1.Course" table="Course">
<id name="id">
<generator class="native"></generator>
</id>
<property name="coursename"/>
<many-to-one name="student" class="com.mrw.test1.Student" column="student_number"></many-to-one>
</class>
</hibernate-mapping>
sql代码为:
2、保存数据
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx=session.beginTransaction();
tudent student=new Student();
student.setName("好学生");
student.setNumber("2013115207");
student.setSex("男");
Course course=new Course();
course.setCoursename("c语言");
student.getCourses().add(course);
session.save(student);
session.save(course);
tx.commit();
3、级联保存
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx=session.beginTransaction();
Student student=new Student();
student.setName("好学生");
student.setNumber("2013115204");
student.setSex("男");
Course course=new Course();
course.setCoursename("java语言");
student.getCourses().add(course);
session.save(student);
tx.commit();
Student.hbm.xml中set增加cascade="save-update"
4、级联删除
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx=session.beginTransaction();
Student student=(Student)session.load(Student.class,"2013115214");
session.delete(student);
tx.commit();
Student.hbm.xml中set增加cascade="delete"
PS: cascade取多个值,cascade="delete,save-update"中间用逗号隔开