Hibernate一对多关系映射及各种操作

来源:互联网 发布:黑客电影知乎 编辑:程序博客网 时间:2024/05/16 05:55

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"中间用逗号隔开


0 0