2013-05-15 77 views
3

我正在从事的一个项目将从jee5/seam升级到jee6,其中“那些虔诚的人”认为由于其大部分特征已被合并而放弃接缝是一个好主意进入jee6。但我有一个案例,我似乎无法在jee6中解决。在谈话中用jee6代替接缝

我们有几个使用ConversationScope的向导。我们使用Seams FlushModeType.Manual来避免提交“脏”数据,直到我们希望我们确实要提交它(每个页面加载基本上都获得它自己的事务,但是因为在我们刷新之前没有任何内容写入数据库,大多数提交不会执行不会改变数据库的状态)。

我在jee6中使用了PersistenceContextType.EXTENDED进行了一些尝试,但似乎我无法找到一种方式将flush转换为数据库,例如seam,唯一的解决方法似乎是使用分离对象或单独的视图模型。

我们真的很喜欢使用附加对象如何使用(对于我们的案例),事情真的很容易理解,而且开发起来很快。

有没有解决方案,我们可以继续使用对话中的附加对象工作?

回答

2

作为Seam2的忠实粉丝,我使用会话,会话范围实体管理器以及设置为手动和分离对象的清除模式编写了出色的应用程序。但是,我们现在必须承认,尽管在Seam手册中强烈推送并且在Hibernate是JPA实现方面运行良好,但这种模式已经基本上被打破了。原因在Mark Struberg的这篇文章中有解释:Is There A Way To Fix the JPA EntityManager?

所以,答案是否定的,没有实际的解决方案来继续在对话中处理连接的对象。你应该使用分离的对象。

还有另一个伟大的CDI博客作者试验了对话范围实体管理器:Conversational CRUD。如果您继续尝试使用附加对象,可能值得阅读。