在我的模型中,我有一些更复杂并且可以抛出异常的方法。当这些异常发生时,它们会使模型处于不一致的状态。到目前为止,这种情况从来都不是问题,因为控制器意识到了这种行为,并且从未在数据存储中使用/保留不一致的实体——该模型的实例通常单独留给垃圾收集器。
但是,在阅读 Objectify 的文档时,我注意到会话缓存包含返回给应用程序的完全相同的 Java 对象。这种行为会破坏我对丢弃不一致实体的假设吗?
这是预期的行为吗?从现在开始,无论如何,我必须始终让我的所有模型实例保持一致状态。因为它们都可以隐式保存在缓存中。如果是这种情况,我必须检查所有抛出异常的方法,甚至是非检查异常,以确保我的模型实例始终一致且可用。
而且,这可能是多线程 Java 应用程序的问题吗?如果用户打开两个浏览器选项卡,并且碰巧发出两个请求,它们将访问缓存中的同一个对象。那可能吗?我是否需要让我的模型的所有类都是线程安全的?
你们是如何解决这些问题的?
谢谢你。