Morphia 是否可以缓存查询结果以每次生成相同的实例

Can Morphia cache query results to produce the same instance each time

是否可以在查询Morphia时得到同一个对象的实例。这是我当前正在执行的用于在我的数据库中查找 ServerInstances 的查询。

Database.get().getDatastore().find(ServerInstance.class).field("_id").equal(id).get()

我之前创建的 Database.get().getDatastore() returns Morphia 数据存储。

如果我运行查询两次,两次的结果都是不同的。这是一个问题,例如,我在 Map 中使用了原始实例。我考虑过更新 ServerInstance#equals(Object obj) 方法来匹配具有匹配 ID 的对象,但这可能不是一个好主意。还有一个事实是,我在第一个实例中更新了一些 @Transient 字段,这意味着两个实例不再相同。

我考虑过为这些对象创建一个本地缓存,但是 Morphia 使用的查询系统比我自己编写匹配对象检查要好得多。

本质上,我想知道的是,如果 Morphia 有自己的本地缓存系统我可以使用,或者有更好的方法来缓存对象,以便我可以继续使用 Morphia 查询系统。

提前致谢!

Morphia 目前没有这样的缓存机制,没有。考虑到类似的事情的复杂性,它不太可能进入正确的吗啡。不过,您可以在它前面加上 ehcache 之类的东西。