hibernate中many-to-one实例一

可以发现,添加一个教师的同时指定一个学生,这种方式相当糟糕,合理的方式应该是在添加学生的时候指定教师。即在学生类里指

定教师对象,配置文件里配置成many-to-one。

单纯只使用many-to-one:
在Student类里加入Teacher teacher属性。
注释掉teacher.hbm.xml里的<set ...></set>内容
在student.hbm.xml里入many-to-one属性:

[c-sharp]  view plain copy print ?
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="com.sjtu.xw.pojo2">  
  6.     <class name="Student" table="student">  
  7.         <id name="id" column="id">  
  8.             <generator class="native"></generator>  
  9.         </id>  
  10.         <property name="stuName" column="studentName" length="30" />  
  11.         <many-to-one name="teacher" column="teacherId" class="Teacher"  
  12.             fetch="join" lazy="false" />  
  13.         <!--  
  14.             这里的column="teacherId"是指明了自身(student表)表里的teacherId属性,指向teacher表的外键  
  15.         -->  
  16.     </class>  
  17. </hibernate-mapping>  
 

做完上述工作即可进行测试了:

Test2.java

[c-sharp]  view plain copy print ?
  1. package com.sjtu.xw.test;  
  2. import java.util.List;  
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.Transaction;  
  6. import com.sjtu.xw.pojo2.Student;  
  7. import com.sjtu.xw.pojo2.Teacher;  
  8. import com.sjtu.xw.util.HibernateUtil;  
  9. public class Test2 {  
  10.     public static void main(String[] args) {  
  11.         Test2 test = new Test2();  
  12.         // test.addStudent();//通过  
  13.         //test.addTeacher();//通过  
  14.         test.test();  
  15.     }  
  16.     public void addStudent() {  
  17.         Teacher teacher = new Teacher();  
  18.         teacher.setId(1);  
  19.         Student student = new Student();  
  20.         student.setStuName("student8");  
  21.         student.setTeacher(teacher);  
  22.         SessionFactory sf = HibernateUtil.getSessionFactory();  
  23.         Session session = sf.openSession();  
  24.         Transaction tx = session.beginTransaction();  
  25.         session.save(student);  
  26.         tx.commit();  
  27.         session.close();  
  28.         sf.close();  
  29.     }  
  30.     public void addTeacher() {  
  31.         Teacher teacher = new Teacher();  
  32.         teacher.setTeaName("Teacher5");  
  33.         SessionFactory sf = HibernateUtil.getSessionFactory();  
  34.         Session session = sf.openSession();  
  35.         Transaction tx = session.beginTransaction();  
  36.         session.save(teacher);  
  37.         tx.commit();  
  38.         session.close();  
  39.         sf.close();  
  40.     }  
  41.     public void test() {  
  42.         SessionFactory sf = HibernateUtil.getSessionFactory();  
  43.         Session session = sf.openSession();  
  44.         Transaction tx = session.beginTransaction();  
  45.         List list = session.createQuery("from Student s where s.id=1").list();  
  46.         Student s = (Student) list.get(0);//找student的id为1的学生,并获取老师的信息。  
  47.     //  System.out.println(s);  
  48.         System.out.println(s.getTeacher());  
  49.         System.out.println(s.getTeacher().getTeaName());  
  50.         tx.commit();  
  51.         session.close();  
  52.         sf.close();  
  53.     }  
  54. }  





本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2010/12/01/2297065.html,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值