zoukankan      html  css  js  c++  java
  • Hibernate学习5—Hibernate操作对象

    第一节:Hibernate 中四种对象状态                                    
    删除状态:处于删除状态的Java 对象被称为删除对象。比如说session delete一个对象,这个对象就不处于session缓存中了, 已经从session的缓存中移出来了,只要提交事务的话,对应的数据库记录也会被删除。
     
    游离状态:比如说session被关闭了,这里面的对象就变为游离状态了,游离状态和删除状态中的对象,如果不用的话,会被垃圾收集器回收。
     
    几种状态之间的转化:
    例子:
    public class StudentTest {
        public static void main(String[] args) {
            SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
            Session session = sessionFactory.openSession();    
            session.beginTransaction();    
            
            Class c1 = new Class();        //临时对象1
            c1.setName("08计本");
            
            Class c2 = new Class();        //临时对象2
            c2.setName("09计本");
            
            session.save(c1);        //持久化对象
            session.save(c2);        //持久化对象
            
            session.delete(c2);     //删除对象
            
            session.getTransaction().commit();    //提交事务
            session.close();                    //关闭session
            
            System.out.println(c1.getName());    //游离对象
            System.out.println(c2.getName());    //删除对象
        }
    
    }
    View Code

    解释:

    c1、c2刚被new出来的时候是临时状态
     
    session.save(c1) session.save(c2),c1/c2就变成了持久化对象
     
     
    session被关闭之后,c1就是游离状态了,c1已经不在session缓存中了,当然呢,有一个对象引用依然指向着它,这个对象依然存在,只不过是变成游离对象了;
    System.out.println(c1.getName())这个数据依然能取得到;
     
    session.delete(c2)后,c2从session缓存中被移出,c2变为删除状态了,它指的删除是,session提交事务时会删除这个对象对应的数据库里面的一条记录
    System.out.println(c2.getName())还是能打印,只不过是删除状态;
     
     
     
    console打印:
     
  • 相关阅读:
    (剑指Offer)面试题18:树的子结构
    (剑指Offer)面试题17:合并两个排序的链表
    (剑指Offer)面试题16:反转链表
    程序员水平分级 你属于哪一类?
    Hacker
    十分钟让你看懂中国经济形势,10分钟,坚持看完,必有所获~(转载)
    人口问题,怎样的生育率才能保持正常的世代更替?
    理科和文科的区别?
    柴晓霞:做销售要学会画蓝图 (转载)
    工作,为钱还是为理想
  • 原文地址:https://www.cnblogs.com/tenWood/p/7252993.html
Copyright © 2011-2022 走看看