JAVA Spring与事务, 三种时态(游离/托管/持久), 懒加载的关系?

Spring学的很晕,有没有朋友可以帮忙解释下?谢谢!... Spring学的很晕, 有没有朋友可以帮忙解释下? 谢谢! 展开
 我来答
fuhaiwei
推荐于2017-11-26 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1396万
展开全部
游离不用说,你自己新建对象就是游离态。

持久态,如果你的事务是放在Service层,那么在Service层及以下的方法里,从Session中获取的对象,或者save persis update等的对象就是持久态。

托管态,如果你的Service层方法返回一个PO对象,这个对象返回之后肯定是托管态。
如果你的Service层方法接受一个游离态PO对象,然后被save了,Servcie层方法返回后,这个游离态PO对象,肯定也是托管态。

懒加载异常:
如果你在Action层或者View层对托管态对象调用get方法试图获取懒加载的数据,肯定报异常。
原因是事务边界就在Service层方法处结束,Session也会在Service方法退出后关闭。

而如果使用OpenSessionInViewFilter,则Session的关闭时机会延迟到View层,其实就是JSP代码运行完毕之后才关闭。这样的话就不会报懒加载异常了。
追问
你好解释的再通俗点, 我是初学的, 

另外能不能解释下spring不是自动管理事务吗? 为什么需要定义传播行为和隔离级别, 貌似是AOP?
追答

想要理解如何自动管理事务,得先明白如何手动使用事务。

  1. 先学数据库,什么是数据库事务。

  2. 学Hibernate,Hibernate手动事务如何使用。

  3. 学Spring,Spring的事务管理是如何实现的。

  4. 学JSP+Servlet。

  5. 学J2EE的多层结构。

  6. 学SSH整合。

  7. 学如何在SSH中,使用手动事务。(编程式事务)

  8. 学如何在SSH中,使用自动事务。(声明式事务)


一个回答不可能给你回答清楚的,看看这本书吧。

babytomdog
2014-08-23
知道答主
回答量:21
采纳率:0%
帮助的人:9.1万
展开全部
亲,那时态是hibernate的吧
追问
Spring发起查询后关闭代理的Session, 原先Session中的对象就变成游离态了, 难道用Spring整合后就不用考虑三种时态了吗?
追答
但是这一块知识点是属于hibernate的,你找一些hibernate的教程来看看,会讲得很详细
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式