Hibernate(十三)session缓存机制和三种对象状态

    xiaoxiao2021-08-15  118

     

    Hibernate(十三)session缓存机制和三种对象状态 hibernate向我们提供的主要的操纵数据库的接口,Session就是其中的一个, 它提供了基本的增,删,改,查方法.而且具有一个缓存机制,能够按照某个时间点, 按照缓存中的持久化对象属性的变化来更新数据库,着就是Session的缓存清理过程. 在Hibernate中对象分为三个状态,临时,持久化,游离. 如果我们希望Java里的一个对象一直存在,就必须有一个变量一直引用着这个对象. 当这个变量没了.对象也就被JVM回收了. 这篇博客我们就带大家一起来看一下session的缓存机制,也就是hibernate的一级缓存, 还有hibernate三种对象状态的详细情况。 当Session的save()方法持久化一个Customer对象时, Customer对象被加入到Session的缓存中, 以后即使应用程序中的引用变量不再引用Customer对象, 只要Session的缓存还没有被清空,Customer对象仍然处于生命周期中。

     

     

     

     

    Hibernate(十三)session缓存机制和三种对象状态 hibernate向我们提供的主要的操纵数据库的接口,Session就是其中的一个, 它提供了基本的增,删,改,查方法.而且具有一个缓存机制,能够按照某个时间点, 按照缓存中的持久化对象属性的变化来更新数据库,着就是Session的缓存清理过程. 在Hibernate中对象分为三个状态,临时,持久化,游离. 如果我们希望Java里的一个对象一直存在,就必须有一个变量一直引用着这个对象. 当这个变量没了.对象也就被JVM回收了. 这篇博客我们就带大家一起来看一下session的缓存机制,也就是hibernate的一级缓存, 还有hibernate三种对象状态的详细情况。 当Session的save()方法持久化一个Customer对象时, Customer对象被加入到Session的缓存中, 以后即使应用程序中的引用变量不再引用Customer对象, 只要Session的缓存还没有被清空,Customer对象仍然处于生命周期中。

     

     

     

     

    tx = session.beginTransaction(); Customer c1=new Customer(“zhangsan",new HashSet()); //Customer对象被持久化,并且加入到Session的缓存中 session.save(c1); Long id=c1.getId(); //c1变量不再引用Customer对象 c1=null; //从Session缓存中读取Customer对象,使c2变量引用Customer对象 Customer c2=(Customer)session.load(Customer.class,id); tx.commit(); //关闭Session,清空缓存 session.close(); //访问Customer对象 System.out.println(c2.getName()); // c2变量不再引用Customer对象,此时Customer对象结束生命周期。 c2=null;

     

     

     

     

     

    转载请注明原文地址: https://ju.6miu.com/read-676335.html

    最新回复(0)