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 之类的东西。
是否可以在查询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 之类的东西。