Hibernate两个表关联的增删改查由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“hibernate增删改查”。
一对多的CRUD
增:
第一种:
//大概是向某个班级中添加学生
public boolean save(int id,Salary s){ SeionFactory sf=null;Seion seion=null;Transaction tx=null;try {
sf = new Configuration().configure().buildSeionFactory();seion = sf.openSeion();tx=seion.beginTransaction();
Employee e=(Employee)seion.get(Employee.cla,id);Salary sa=new Salary();
sa.setMonths(s.getMonths());sa.setPay(s.getPay());e.getSalary().add(sa);seion.save(e);tx.commit();return true;} catch(HibernateException e){
// TODO Auto-generated catch block e.printStackTrace();return false;} }
第二种:
public boolean save(Salary s,Employee em){ SeionFactory sf=null;Seion seion=null;Transaction tx=null;try {
sf = new Configuration().configure().buildSeionFactory();seion = sf.openSeion();tx=seion.beginTransaction();Employee e=new Employee();e.setName(em.getName());e.setAddre(em.getAddre());
Salary sa=new Salary();
sa.setMonths(s.getMonths());sa.setPay(s.getPay());e.getSalary().add(sa);seion.save(e);tx.commit();return true;} catch(HibernateException e){
// TODO Auto-generated catch block e.printStackTrace();return false;
}finally{
seion.close();sf.close();} }
删:
//根据传过来的学生id,删除学生信息。需要级联删除,在配置的时候加上cascade=“all”
public boolean delete(int id){ SeionFactory sf=null;Seion seion = null;try { sf = new Configuration().configure().buildSeionFactory();
seion = sf.openSeion();Transaction tx=seion.beginTransaction();Employee em=(Employee)seion.get(Employee.cla, id);seion.delete(em);tx.commit();return true;} catch(HibernateException e){ // TODO Auto-generated catch block e.printStackTrace();return false;}finally{ seion.close();sf.close();} }
多对一的CRUD
查询所有:《外键在多的一方的表中》
dao层:
先查多的一方的所有 public List selectStudent(){
SeionFactory sf = new Configuration().configure().buildSeionFactory();
Seion seion = sf.openSeion();String hql=“from Student”;
Query query=seion.createQuery(hql);List stu = query.list();return stu;}
根据多的一方的id查询一的一方
public Claes selectClaes(Student student){
SeionFactory sf = new Configuration().configure().buildSeionFactory();
Seion seion = sf.openSeion();
Student stu=(Student)seion.get(Student.cla, student.getId());
Claes claes=stu.getClaes();return claes;}
service层的遍历拼接:
public List infoServlce(){
HibernateImpl dao=new HibernateImpl();List student=dao.selectStudent();List info=new ArrayList();for(Student st:student){
Claes claes=dao.selectClaes(st);
Info in=new Info(st.getName(),claes.getName());
System.out.println(info.toString());info.add(in);}
return info;}
Test版本的一对多,多对一的增删改差
多对一测试的CRUD
package dao;
import org.hibernate.Seion;import org.hibernate.SeionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;
import pojo.Claes;import pojo.Student;
public cla HibernateTest { @Test public void save(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();Seion seion = sf.openSeion();Transaction tx = seion.beginTransaction();Claes c = new Claes();c.setName(“1208C”);Student s = new Student();s.setName(“张三”);s.setClaes(c);seion.save(s);tx.commit();seion.close();sf.close();
}
@Test public void select(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();
Seion seion = sf.openSeion();
Transaction tx = seion.beginTransaction();Student s =(Student)seion.get(Student.cla, 6);String username = s.getName();Claes c = s.getClaes();System.out.println(username + “:” + c.toString());tx.commit();seion.close();sf.close();}
@Test public void delete(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();
Seion seion = sf.openSeion();
Transaction tx = seion.beginTransaction();Student s =(Student)seion.get(Student.cla, 4);seion.delete(s);tx.commit();seion.close();sf.close();}
@Test public void update(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();
Seion seion = sf.openSeion();
Transaction tx = seion.beginTransaction();Claes c=(Claes)seion.get(Claes.cla, 2);Student s=(Student)seion.get(Student.cla, 3);s.setClaes(c);tx.commit();seion.close();sf.close();} }
一对多测试的CRUD
package test;
import java.util.Set;
import org.hibernate.Seion;import org.hibernate.SeionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;
import pojo.Claes;import pojo.Student;
public cla HibTest { @Test public void save(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();Seion seion = sf.openSeion();Transaction tx = seion.beginTransaction();Student s1=new Student();s1.setName(“任阳东”);Student s2=new Student();s2.setName(“田鑫圆”);
Claes c1=new Claes();c1.setName(“1207C”);
Set set=c1.getStudent();set.add(s1);set.add(s2);seion.save(c1);tx.commit();seion.close();sf.close();} @Test public void delete(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();Seion seion = sf.openSeion();Transaction tx = seion.beginTransaction();Claes c=(Claes)seion.get(Claes.cla, 2);seion.delete(c);tx.commit();seion.close();sf.close();} @Test public void get(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();Seion seion = sf.openSeion();Transaction tx = seion.beginTransaction();Claes c=(Claes)seion.get(Claes.cla, 3);System.out.println(c.getName());for(Student s:c.getStudent()){ System.out.println(s.toString());} tx.commit();seion.close();sf.close();} }
一对多双向关联测设的CRUD
package test;
import java.util.Set;
import org.hibernate.Seion;import org.hibernate.SeionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;
import pojo.Claes;import pojo.Student;
public cla HibTest { @Test public void save(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();Seion seion = sf.openSeion();Transaction tx = seion.beginTransaction();Student s1=new Student();s1.setName(“任阳硕”);Student s2=new Student();s2.setName(“程圆”);
Claes c1=new Claes();c1.setName(“1208B”);
Set set=c1.getStudent();set.add(s1);set.add(s2);seion.save(c1);tx.commit();seion.close();sf.close();} @Test public void delete(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();Seion seion = sf.openSeion();Transaction tx = seion.beginTransaction();Claes c=(Claes)seion.get(Claes.cla, 4);seion.delete(c);tx.commit();seion.close();sf.close();} @Test public void get(){ SeionFactory sf = new Configuration().configure().buildSeionFactory();Seion seion = sf.openSeion();Transaction tx = seion.beginTransaction();Claes c=(Claes)seion.get(Claes.cla, 5);System.out.println(c.getName());for(Student s:c.getStudent()){ System.out.println(s.toString());} tx.commit();seion.close();sf.close();} }