您的当前位置:我要购书网>在线阅读>Java/J2EE/JSP

hibernate一对多单向关系

来源:互联网  作者:  发布:我要购物网收集整理  发布时间:2006-8-31 人气:188

Hibernate一对多单向关系业务逻辑:Teacher类和Student类,假定为一对多的关系,即一个教师有多个学生。 1. 数据库schemaTeachers表:create table TEACHERS( ID NUMBER(10) not null, TEACHERNAME VARCHAR2(15))alter table TEACHERS add constraint DERE primary key (ID) Students表:create table STUDENTS( ID NUMBER(10) not null, STUDENTNAME VARCHAR2(15), TEACHER_ID NUMBER(10))alter table STUDENTS add constraint RERE primary key (ID)alter table STUDENTS add constraint FFF foreign key (TEACHER_ID) references TEACHERS (ID); 2. Teacher.java和Student.javaTeacher.javapackage mypack; public class Teacher { //教师id private Long id; //教师名称 private String teacherName; /** * 缺省构造函数 */ public Teacher() { } /** * 得到教师id * @return Long 教师id */ public Long getId() { return id; } /** * 设置教师id * @param id Long 教师id */ public void setId(Long id) { this.id = id; } /** * 得到教师名称 * @return String 教师名称 */ public String getTeacherName() { return teacherName; } /** * 设置教师名称 * @param teacherName String 教师名称 */ public void setTeacherName(String teacherName) { this.teacherName = teacherName; } /** * 构造函数 * @param teacherName String */ public Teacher(String teacherName) { this.teacherName = teacherName; }} Student.javapackage mypack; public class Student { //学生id private Long id; //学生名称 private String studentName; //教师类 private Teacher teacher; /** * 缺省构造函数 */ public Student() { } /** * 得到学生id * @return Long 学生id */ public Long getId() { return id; } /** * 设置学生id * @param id Long 学生id */ public void setId(Long id) { this.id = id; } /** * 得到学生名称 * @return String 学生名称 */ public String getStudentName() { return studentName; } /** * 设置学生名称 * @param studentName String 学生名称 */ public void setStudentName(String studentName) { this.studentName = studentName; } /** * 得到教师对象 * @return Teacher 教师对象 */ public Teacher getTeacher() { return teacher; } /** * 设置教师对象 * @param teacher Teacher 教师对象 */ public void setTeacher(Teacher teacher) { this.teacher = teacher; } /** * 构造函数 * @param string String * @param teacher Teacher */ public Student(String studentName, Teacher teacher) { this.studentName = studentName; this.teacher = teacher; }} 3. hibernate.properties## Oracle hibernate.dialect net.sf.hibernate.dialect.Oracle9Dialecthibernate.dialect net.sf.hibernate.dialect.OracleDialecthibernate.connection.driver_class oracle.jdbc.driver.OracleDriverhibernate.connection.username jbcmhibernate.connection.password jbcmhibernate.connection.url jdbc:oracle:thin:@localhost:1521:wsy 4. Teacher.hbm.xml和Student.hbm.xmlTeacher.hbm.xml Student.hbm.xml 5. 数据库操作类BusinessService.javapackage mypack; import net.sf.hibernate.*;import net.sf.hibernate.cfg.Configuration;import java.util.*; public class BusinessService{ //session工厂类 public static SessionFactory sessionFactory; //实始化session工厂 static{ try{ //建立配置类,添加Student类和Teacher类 Configuration config = new Configuration(); config.addClass(Student.class) .addClass(Teacher.class); //得到sessionFactory对象 sessionFactory = config.buildSessionFactory(); }catch(Exception e){e.printStackTrace();} } /** * 通过学生类,查找教师类 * @param student Student * @throws Exception * @return List */ public List findTeacherByStudent(Student student) throws Exception{ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); List orders=(List)session.find("from Student as o where o.teacher.id="+student.getId()); tx.commit(); return orders; }catch (Exception e) { if (tx != null) { tx.rollback(); } throw e; } finally { session.close(); } } /** * 查找指定id的学生类 * @param student_id long * @throws Exception * @return Student */ public Student findStudent(long student_id) throws Exception{ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); Student student=(Student)session.load(Student.class,new Long(student_id)); tx.commit(); return student; }catch (Exception e) { if (tx != null) { //发生错误,回滚 tx.rollback(); } throw e; } finally { //没有错误,关闭session session.close(); } } /** * 级连保存Teacher对象和Student对象 * @throws Exception */ public void saveTeacherAndStudentWithCascade() throws Exception{ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); Teacher teacher=new Teacher("myTeacher"); Student student1=new Student("student1",teacher); Student student2=new Student("student2",teacher); session.save(student1); session.save(student2); tx.commit(); }catch (Exception e) { if (tx != null) { //发生错误,回滚 tx.rollback(); } e.printStackTrace(); } finally { // 没有错误,关闭session session.close(); } } /** * 保存教师和学生对象 * @throws Exception */ public void saveTeacherAndStudent() throws Exception{ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); Teacher teacher=new Teacher("teacher1"); session.save(teacher); Student student1=new Student("student001",teacher); Student student2=new Student("student002",teacher); session.save(student1); session.save(student2); //提交事务 tx.commit(); }catch (Exception e) { if (tx != null) { //发生错误,回滚 tx.rollback(); } throw e; } finally { // 没有错误,关闭session session.close(); } } /** * 输出学生对象集合 * @param students List */ public void printStudents(List students){ for (Iterator it = students.iterator(); it.hasNext();) { Student student=(Student)it.next(); System.out.println("OrderNumber of "+student.getTeacher().getTeacherName()+ " :"+student.getStudentName()); } } /** * 测试方法 * @throws Exception */ public void test() throws Exception{ saveTeacherAndStudent();// saveTeacherAndStudentWithCascade();// Student student=findStudent(1);// List students=findTeacherByStudent(student);// printStudents(students); } public static void main(String args[]) throws Exception { new BusinessService().test(); sessionFactory.close(); }} 目录结构示意:Classes Hibernate.property /mypack Teacher.java Student.java BusinessService.java Teacher.hbm.xml Student.hbm.xml 参考资料:精通Hibernate:Java对象持久化技术详解 孙卫琴
相关文章
· hibernate杂记
· hibernate条件查询(criteria query)
· hibernate应用配置说明-middlegen和hb..
· hibernate特点与思考
· hibernate 调用带有复合主键的stored pr..
· hibernate 多对多例
· hibernate、spring、struts编程宝典
· hibernate 一对多例
· hibernate编程经验
· hibernate: custom collection..
热点文章
%>
· creating user controls
· 提高fastreplace速度 (fstrrep.pas)
· asc ii 完整码表及简介
· 自动生成拼音(汉字反查到拼音)
· sql2000无法安装的解决办法
· 浏览器集成教学 自定义浏览器
· vc++技术内幕(第四版)笔记(第7章)
· mysql5.0中文乱码解决方案
· sql server日期计算
· vc下利用ado连接access数据库
 淘宝旺旺:我要购书网上书店『图书目录
本购书中心地址: 杭州市延安路111号清波商厦南楼D座(总部) 上海市闸北区老沪太路网上购书中心(沪部),  邮编:310002
电子邮件:books@51goushu.com  经营许可证编号:沪ICP备06038574号
版权所有 2003-2008 © All Rights Reserved .购书网