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,如需转载请自行联系原作者


目录
相关文章
|
5月前
|
XML Java 数据库连接
Hibernate与Spring整合实践实例
Hibernate与Spring整合实践实例
45 0
|
存储 SQL Java
Hibernate入门实例
Hibernate是一个基于jdbc的开源的持久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码工作。Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
Hibernate入门实例
|
存储 Java 数据库连接
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
154 0
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
|
Java 数据库连接
【框架】[Hibernate]利用Hibernate进行单表的增删改查-Web实例(2)
【框架】[Hibernate]利用Hibernate进行单表的增删改查-Web实例
211 0
【框架】[Hibernate]利用Hibernate进行单表的增删改查-Web实例(2)
|
Java 数据库连接 数据库
【框架】[Hibernate]利用Hibernate进行单表的增删改查-Web实例(1)
【框架】[Hibernate]利用Hibernate进行单表的增删改查-Web实例
146 0
【框架】[Hibernate]利用Hibernate进行单表的增删改查-Web实例(1)
|
SQL 设计模式 缓存
【框架】[Hibernate]构架知识点详解入门与测试实例
【框架】[Hibernate]构架知识点详解入门与测试实例
101 0
【框架】[Hibernate]构架知识点详解入门与测试实例
|
前端开发 Java 数据库连接
spring+springmvc+hibernate整合实例
最近要弄一个自动化生成表及其实体对应的增删改查的框架,于是我想到了hibernate,hibernate就有根据实体自动建表,而且增删改查,都不需要想mybatis那样在xml文件中配置。 不过怎样让该框架通过前端一个表单页面配置,从而让后台对应的生成,这个我还没想明白,不过说到这,不得不提传统的ssh框架,传统的ssh框架,通常是指spring+struts2+hibernate或spring+struts+hibernate 不过想到struts2就有恐惧感,太多的action和xml配置,比较繁琐,不如springmvc来的痛快。
1297 0
|
XML Java Apache
CXF+Spring+Hibernate实现RESTful webservice服务端实例
CXF+Spring+Hibernate实现RESTful webservice服务端实例
1553 0
|
SQL Java 数据库连接
Hibernate中执行NativeSQL语句查询返回自定义类型的POJO实例的List(多表查询)
Hibernate中定义了hql的概念,简单地说就是,为java的码农提供了一套类似于sql的语法,但是数据表名变成了PO名,数据字段名变成了PO中属性成员名,并把这种语法称为hql。优点就是:hql看上去是面向对象的,码农不需要知道数据库中数据表的结构,只需要依据PO编写面向对象的数据库增删改查的语句。
4120 0