您的位置:首页 > 其它

Hibernate的一对多增改级联操作

2015-08-14 21:40 375 查看
建立两张表:student,grade。

创建语句:create table grade(id int(10) auto_increment primary key,gragename varchar(40));

create table student(id int (10) auto_increment primary key,name varchar(40),password varchar(40),sex varchar(40),foregin key(id) reference grade(id));

这个创建语句表明grade的主键id是student的外键id

之后的方法同上篇user的创建方法相同。

package dao;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

import org.hibernate.ScrollableResults;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import entity.Grade;

import entity.Student;

/**

* 测试一对多

* @author Administrator

*

*/

public class TestRelation {

private static SessionFactory sessionFactory=null;

private static Session session=null;

Transaction transaction=null;

static {

try {

sessionFactory=new Configuration().configure().buildSessionFactory();

} catch (Exception e) {

// TODO: handle exception

}

}

public static void saveGradeAndStudent(){

Grade grade =new Grade();

grade.setGradename("第三期");

Student student=new Student();

student.setName("zhangsan");

student.setPassword("1345");

student.setAge(12);

//当grade.hbm.xml中inverse=true表明有学生维护班级的关联关系

//grade-student-relation这张表,需要学生向该表插入数据

student.setGrade(grade);

//当grade.hbm.xml中inverse=false表明有班级维护学生关联关系,区别是多执行一个updata

//grade.getStudents().add(student);

session=sessionFactory.openSession();

session.save(grade);

session.save(student);

session.beginTransaction().commit();

session.close();

}

/**

关联查询(级联查询)

延迟加载机制(面试题)

*/

public static void queryAllGradeAndStudent(){

session =sessionFactory.openSession();

List list =session.createQuery("from Grade").list();

for(int i=0;i<list.size();i++){

Grade grade=(Grade) list.get(i);

Set studentset=grade.getStudents();

System.out.println(studentset);

}

}

/**

* 删除机制(级联删除)

* @param id

*/

public static void deleteALLGradeAndStudent(Integer id){

Session session=sessionFactory.openSession();

Grade grade =(Grade) session.get(Grade.class, id);

try {

session.beginTransaction();

session.delete(grade);

session.getTransaction().commit();

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}finally{

session.close();}

}

public static void updateAllGradeAndStudent(){

Session session=sessionFactory.openSession();

//Grade grade =(Grade) session.get(Grade.class, id);

//Set set=grade.getStudents();

try {

session.beginTransaction();

Iterator student=(Iterator) session.createQuery("from Student").list().iterator();

while(student.hasNext()){

Student student2=(Student) student.next();

student2.setName(student2.getName()+1);

// Grade grade2=(Grade) grade.next();

// grade2.setId(grade2.getId()+1);

}

// grade.setId(11);

// grade.setGradename("测试");

//session.update(grade);

session.getTransaction().commit();

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

finally{

session.close();

}

}

/**

* 根据名字级联更新

*/

public static void updateAllGrade1AndStudent1(Integer id){

session=sessionFactory.openSession();

Grade grade=(Grade) session.get(Grade.class, id);

session.beginTransaction();

//grade.setGradename("dai");

//grade1.setId(13);

Set studentSet=grade.getStudents();

Iterator iterStu=studentSet.iterator();

while(iterStu.hasNext()){

Student student=(Student) iterStu.next();

student.setAge(student.getAge()+8);

System.out.println(student);

session.getTransaction().commit();

}session.close();

}

public static void main(String[] args) {

//saveGradeAndStudent();

//queryAllGradeAndStudent();

//deleteALLGradeAndStudent(new Integer(2));

updateAllGradeAndStudent();

//updateAllGrade1AndStudent1(7);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: