Hibernate一对多增删改查

Hibernate一对多增删改查

JavaEE 2010-06-05 12:10:43 阅读21 评论0 字号:

package com.bsb.client;

import java.io.Serializable;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.cfg.HbmBinder;

import com.bsb.pojo.Classes;
import com.bsb.pojo.Studs;
import com.bsb.util.HibernateSessionFactory;


public class text {
 /**
  * 保存班级,保存学生,同时给学生分配班级
  */
 public void save(){
  ///创建班级
  Classes cs=new Classes();
  cs.setCname("5班");
  cs.setCcode("bj05");
  //创建学生
  Studs st=new Studs();
  st.setSname("xuesheng501");
  st.setSsex("2");
  st.setSage((long)21);
  st.setSbirthday(java.sql.Date.valueOf("2009-09-09"));
  //当classes.hbm.xml中inverse=true学生维护班级
  st.setClasses(cs);
  //当classes.hbm.xml中inverse=false 班级维护学生
  //cs.getStudses().add(st);
  Session session=HibernateSessionFactory.getSession();
  session.save(cs);
  session.save(st);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
 }
 /**
  * 保存班级
  */
 public void saveClasses(){
  Session session=HibernateSessionFactory.getSession();
  Classes cs=new Classes();
  cs.setCname("6班");
  cs.setCcode("bj06");
  session.save(cs);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
 }
 /**
  * 保存学生
  */
 public void saveStud(){
  Session session=HibernateSessionFactory.getSession();
  Classes cs=new Classes();
  Studs st=new Studs();
  st.setSname("xuesheng601");
  st.setSsex("1");
  st.setSage((long)22);
  st.setSbirthday(java.sql.Date.valueOf("2009-09-09"));
  session.save(st);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
 }
 /**
  * 给学生分配班级
  */
 public void saveStudinClasses(Long sid,Long cid){
  Session session=HibernateSessionFactory.getSession();
  Studs stu=(Studs)session.get(Studs.class, sid);
  Classes cs=(Classes) session.get(Classes.class, cid);
  //给学生分配班级
  stu.setClasses(cs);
  session.saveOrUpdate(stu);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
 }
 /**
  * 查询所有班级classes.hbm.xml中set元素的inverse=“true”
  * 查询班级的同时查询该班级的学生
  */
 public List checkallClasses(){
  Session session=HibernateSessionFactory.getSession();
  List allcs=session.createQuery("from Classes").list();
  for(int i=0;i<allcs.size();i++){
   Classes cs=(Classes) allcs.get(i);
   if(!Hibernate.isInitialized(cs.getStudses())){
    Hibernate.initialize(cs.getStudses());
   }
  }
  HibernateSessionFactory.closeSession();
  return allcs;
 }
 /**
  * 查询某班的所有学生 直接查询学生
  */
 public List checkStudByCid(long cid){
  Session session = HibernateSessionFactory.getSession();
  
  List studs = session.createQuery("from Studs where classes.id=:id")
     .setLong("id", cid)
      .list();
  
  HibernateSessionFactory.closeSession();
  return studs;
 }
 /**
  * 删除班级,保留学生
  *  classes.hbm.xml中set元素的inverse=“true”
  */
 public void deleteClassBycid(Long cid){
  Session session=HibernateSessionFactory.getSession();
  Classes cs=(Classes) session.get(Classes.class, cid);
  Iterator its=cs.getStudses().iterator();
  while(its.hasNext()){
   Studs stu=(Studs) its.next();
   stu.setClasses(null);
  }
  session.delete(cs);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
 }
 /**
  * 删除班级,同时删除学生
  * classes.hbm.xml中set元素的inverse=“true” cascade="delete"
  */
 public void deleteClassesBycid(Long cid){
  Session session=HibernateSessionFactory.getSession();
  Classes cs=(Classes) session.get(Classes.class, cid);
  session.delete(cs);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
 }
 public static void main(String[] args) {
  text text=new text();
  //text.save();
  //text.saveClasses();
  //text.saveStud();
  //text.saveStudinClasses(new Long(65), new Long(25));
  
  //查询所有班级同时查询学生
//  List cs=text.checkallClasses();
//  for(int i=0;i<cs.size();i++){   
//   Classes c = (Classes) cs.get(i);
//   System.out.println(c.getCname()+":"+c.getCcode());
//   //获取每个班级的所有学生
//   Iterator its = c.getStudses().iterator();
//   while(its.hasNext()){    
//    Studs s = (Studs) its.next();
//    System.out.println(s.getSid()+":"+s.getSname());
//   }
//  }
  
  //查询某班的所有学生 直接查询学生
//  List studs = text.checkStudByCid((long)24);
//  for(int i=0;i<studs.size();i++){
//   
//   Studs s = (Studs) studs.get(i);
//   System.out.println(s.getSid()+":"+s.getSname());
//  }
  //删除班级.保留学生
  //text.deleteClassBycid(new Long(2));
  //删除班级.删除学生
  text.deleteClassesBycid(new Long(3));
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值