缓存,对象在持久层的三种状态

缓存,对象在持久层的三种状态

ID:40883597

大小:59.50 KB

页数:6页

时间:2019-08-09

缓存,对象在持久层的三种状态_第1页
缓存,对象在持久层的三种状态_第2页
缓存,对象在持久层的三种状态_第3页
缓存,对象在持久层的三种状态_第4页
缓存,对象在持久层的三种状态_第5页
资源描述:

《缓存,对象在持久层的三种状态》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、对象在持久层的三种状态(面试时经常问)一、session缓存(面试时经常问)(一)Session缓存的作用:Session.save()吃就换一个Customer对象时,把Customer对象放入session缓存中,以后即便是程序中引用变量不再引用Customer对象,只要Session缓存还没有清空,Customer对象依然处于生命周期中。好处:1、减少访问数据库的频率。2、保证缓存中的对象与数据库中的相关的记录一致3、清理缓存是指按照缓存中的对象的状态的变化来同步更新数据的。(二)Session缓存清理的时间点:1、当应用程序调用org.

2、hiberante.Transaction的commit()方法时候,commit()先清理缓存再向数据库提交事务。2、当应用程序调用session中的flush()方法时候二、hibernate缓存的种类(面试时经常问)(一)、Session:一级缓存,不可改,必须使用。由于Session对象的生命周期,通常对应一个数据库事务或者一个应用事务,因此session缓存是事务范围内的缓存。一级缓存是必须的,而且不允许修改也无法别卸载,持久化类每个对象实例都要有唯一的OID(主键ID)。(二)、SessionFactory:二级缓存,可改,可拔插。

3、它是由SessionFactory进行管理的。SessionFactory的生命周期和整个应用程序的生命周对应。因此SessionFactory缓存称为进程范围的缓存。可选,可以针对某个集合粒度上配置二级缓存。Hiberante的第一级缓存(session缓存)Hiberante的第二级缓存(SessionFacory缓存)缓存并发访问策略。查询缓存。缓存适配器(CahceProvider)缓存的实现三、对象在持久层的三种状态(面试时经常问)1、临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于session的缓存中。

4、处于临时状态。临时对象。2、持久化状态(persustent):已经被持久化,加入到session的缓存中(没有到数据库中)。持久化对象。3、游离状态(detached):已经被持久化,但不处于session的缓存中(不一定到数据库中)。游离对象。临时状态持久化状态Save()/saveOrUpdate()delete()delete()evict()/close()/clear()update/saveOrUpdate游离状态lock()例子://Category对象开始生命周tx=session.beginTransaction();//临

5、时状态Categorycategory1=newCategory("level1",null,newHashSet());//Categorycateory=(Category)session.get(Category.class,1);//转变为持久化状态session.save(category1);//处于持久化状态Categorycateory=(Category)session.get(Category.class,1);//转变为游离状态session.close();//处于游离状态cateory.getNam

6、e();//结束生命周期cateory=null;四、Hibernate的检索策略(一)、立即检索(查询所有Customer(4条数据),Oreders的数据)ListcustomerLists=session.createQuery(“FromCustomerasc”).list();Select*fromcustomerSelect*fromOrederswhereCustomer_id=1;Select*fromOrederswhereCustomer_id=2;Select*fromOrederswhereCustomer_id=3;S

7、elect*fromOrederswhereCustomer_id=4;缺点:1、select语句太多,需要频繁访问数据库影响检索性能。2、以上查询可以用左外连接去查询Select*fromCustomerascleftouterjoinOredersasoonc.id=o.Customer_id3、只需要访问Customer对象,不需要访问Oreders对象。这个时候就会影响性能。(二)、延迟检索在一对多关联级别使用延迟检索策略,解决立即检索缺点。配置:

8、:Customercutomer=(Customer)session.get(Customer.class,1);就会延迟检索,只发出查询Custom

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。