永发信息网

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

答案:2  悬赏:10  手机版
解决时间 2022-01-01 07:43
  • 提问者网友:风月客
  • 2021-12-31 19:35
Spring学的很晕, 有没有朋友可以帮忙解释下? 谢谢!
最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-12-31 20:07
游离不用说,你自己新建对象就是游离态。

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

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

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

而如果使用OpenSessionInViewFilter,则Session的关闭时机会延迟到View层,其实就是JSP代码运行完毕之后才关闭。这样的话就不会报懒加载异常了。
全部回答
  • 1楼网友:煞尾
  • 2021-12-31 21:29
亲,那时态是hibernate的吧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯