0

在我的模型中,我有一些更复杂并且可以抛出异常的方法。当这些异常发生时,它们会使模型处于不一致的状态。到目前为止,这种情况从来都不是问题,因为控制器意识到了这种行为,并且从未在数据存储中使用/保留不一致的实体——该模型的实例通常单独留给垃圾收集器。

但是,在阅读 Objectify 的文档时,我注意到会话缓存包含返回给应用程序的完全相同的 Java 对象。这种行为会破坏我对丢弃不一致实体的假设吗?

这是预期的行为吗?从现在开始,无论如何,我必须始终让我的所有模型实例保持一致状态。因为它们都可以隐式保存在缓存中。如果是这种情况,我必须检查所有抛出异常的方法,甚至是非检查异常,以确保我的模型实例始终一致且可用。

而且,这可能是多线程 Java 应用程序的问题吗?如果用户打开两个浏览器选项卡,并且碰巧发出两个请求,它们将访问缓存中的同一个对象。那可能吗?我是否需要让我的模型的所有类都是线程安全的?

你们是如何解决这些问题的?

谢谢你。

4

1 回答 1

0

对象化会话!= 用户会话。Ofy 会议是工作会议;它们不应该跨线程共享,应该在需要时创建和丢弃。在这方面,它们类似于 JPA 会话。

于 2013-02-24T02:58:41.240 回答