发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 CQRS

请教一个有关bibernate的session的问题

    
2009-08-05 10:02
赞助商链接

我在项目中碰到一个这样的问题。在服务层使用dao取得了对象,然后再取对象中的子对象时出现session已关闭(使用了延时加载)。
我查了相关资料,发现解决方法一般是:
1.使用opensessioninview模式
2.在dao里面查数据时将要关联的对象fetch出来。
3.将事务配置到service的代理中(原来我是只配了dao的代理),这样session就不会在查询完数据后就关闭了。
我感觉这些方式都不是很好。
请高手指点一下。谢谢!

2009-08-05 10:45

都觉得不好,可使用JPA(Hibernate实现)。不过lazy load问题还是一样的:

http://timepedia.blogspot.com/2009/08/on-reducing-size-of-compressed.html

这篇文章提出解决JPA的LazyInitializationExceptions or NullPointerExceptions问题,因为事务关闭后,就不能再访问那些Lazy load的对象,如果访问,就报这些错误,解决办法有两个:
1. 构造一个DTO,这个我不赞成,违反MDD Evans DDD设计
2. 使用open session in View, 又回到老问题,这个会污染表现层。

Jdon+Hibernate的close session in view也可以参考一下。

[该贴被banq于2009-08-19 14:41修改过]

OSIV模式     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com