hibernate映射之多对多单向

数据模型:

 

表teacher

 

表student

   

 

表t_tea_stu

 

实体对象模型:

Teacher 
    private int tid;
    private String tname;
    private Set<Student> students;

 

Student 
    private int sid;
    private String sname;

 

xml文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.skyedu.bean">
    <class name="Teacher" table="teacher">
       <id name="tid" column="tid" >
             <generator class="native"></generator>
       </id>
       <property name="tname" column="tname" length="30"></property>
       <set name="students" table="t_tea_stu" cascade="save-update">
          <key column="tid"></key>
          <many-to-many class="Student" column="sid" ></many-to-many>
       </set>
    </class>
</hibernate-mapping> 

附录解释:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.skyedu.bean">
    <class name="Student" table="student">
       <id name="sid" column="sid" >
           <generator class="native"></generator>
       </id>
       <property name="sname" column="sname" length="32" ></property>
    </class>
</hibernate-mapping>

 

测试代码:

    
    @Test
    public void testSave(){
        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        try{
             Student student1 = new Student();
             student1.setSname("张三1");
             
             Student student2 = new Student();
             student2.setSname("张三2");
             
             Student student3 = new Student();
             student3.setSname("张三3");
             
             Student student4 = new Student();
             student4.setSname("张三4");
             
             Student student5 = new Student();
             student5.setSname("张三5");
             
             
             Teacher teacher1 = new Teacher();
             teacher1.setTname("王五1");
             Set<Student> students1 = new HashSet<Student>();
             students1.add(student1);
             students1.add(student2);
             students1.add(student3);
             teacher1.setStudents(students1);
             
             Teacher teacher2 = new Teacher();
             teacher2.setTname("王五2");
             Set<Student> students2 = new HashSet<Student>();
             students2.add(student4);
             students2.add(student5);
             teacher2.setStudents(students2);
             
             session.save(teacher1);
             session.save(teacher2);
             
            transaction.commit();
        }catch(Exception e){
            transaction.rollback();
        }finally{
            HibernateUtil.closeSession(session);
        }
    }
    

    @Test
    public void testFind(){
        Session session = HibernateUtil.getSession();
        Teacher teacher = (Teacher) session.get(Teacher.class, 1);
        System.out.println(teacher.getTname());
        for(Student student:teacher.getStudents()){
            System.out.println("--"+student.getSname());
        }
        
    }
    
    

 

 

 

posted @ 2013-02-04 18:10  虎猫  阅读(135)  评论(0编辑  收藏  举报