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));
}
}