您的位置:首页 > 其它

Hibernate中深入了解中状态

2017-12-12 18:54 344 查看
hibernate中的三种状态:瞬时状态(transisent),持久化状态(presistent),离线状态(detached)瞬时状态就是刚new出来,还没有保存到数据库中,session也没有这个对象持久化状态:对象就保存到数据库中,session中也保存这个对象(save(),upateOrSave())离线状态:对象保存在数据库中,session没有保存,(也就是session可能close,clear了)1:transient(瞬时状态转为持久化状态)代码案例:Session session = sessionFactory.getCurrentSession();//开启事物Transaction transaction = session.beginTransaction();User user = new User();//TODO 查看session中是否含有userSystem.out.println("session含有保存实体的状态User:"+session.contains(user)+"/n");//falseuser.setName("宁在一思进");user.setAddress("一代宗师");/*** 此时是在瞬时状态*/session.save(user);//TODO 查看session中是否含有userSystem.out.println("session含有保存实体的状态SAVE:"+session.contains(user)+"/n"); //true
 //事物提交 transaction.commit(); //TODO 查看session中是否含有userSystem.out.println("session含有保存实体的状态commit:"+session.contains(user)+"/n");//true //session 关闭 session.close(); }
此时我们知道hibernate会发出一条insert的语句,执行完save方法后,该user对象就变成了持久化的对象了当执行了session.close()的时候就变成了离线状态此案例:只执行了一个sql:into            T_User            (address, name)        values            (?, ?)2Transisent中的创建Session session = sessionFactory.getCurrentSession();//开启事物Transaction transaction = session.beginTransaction();User user = new User();//TODO 查看session中是否含有userSystem.out.println("session含有保存实体的状态User:"+session.contains(user)+"/n");//fasleuser.setName("宁在一思进s");user.setAddress("一代宗师");session.save(user);//TODO 查看session中是否含有userSystem.out.println("session含有保存实体的状态SAVE:"+session.contains(user)+"/n");//trueuser.setName("莫在一思停s");//TODO 查看session中是否含有userSystem.out.println("session含有保存实体的状态user进行修改:"+session.contains(user)+"/n");//true//事物提交transaction.commit();//TODO 查看session中是否含有userSystem.out.println("session含有保存实体的状态commit:"+session.contains(user)+"/n"); //true//session 关闭session.close();只有一条sql生成   into            T_User            (address, name)        values            (?, ?)和transisent进行的测试并没有影响数据
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: