【发布时间】:2012-05-14 22:13:12
【问题描述】:
我一直在我的 Spring/Hibernate 应用程序中使用会话工厂(注入 DAO 对象的单例 Bean),我正在使用服务层架构,但我遇到了以下问题:
每当我从数据库中获取域对象时,它都会使用休眠会话工厂提供的新会话。在多次请求同一行的情况下,这会导致具有同一域对象的多个实例。 (如果使用单个会话,它将返回指向同一引用的多个对象)因此,对其中一个域对象所做的任何更改都不会被表示同一行的其他域对象考虑在内。
我正在开发一个具有多个视图的 SWING 应用程序,并且我从不同位置(和查询)获得相同的数据库行,因此我需要获取指向同一实例的域对象。
那么我的问题是,是否可以使用 SessionFactory 来实现这一点?如果没有,对我的整个应用程序使用单个会话是否是一种好习惯?在这种情况下,我应该如何以及在哪里声明这个会话? (应该是像sessionFactory一样注入DAO对象的bean吗?)
提前感谢您的帮助
【问题讨论】:
标签: spring hibernate session concurrency sessionfactory