我还没有使用Morphia,但我正在考虑将其用于当前的项目。
假设我有一个包含许多@Reference注释的POJO,并要求Morphia从数据库中获取对象图。如果我随后进行另一个DAO或DataStore调用,并要求Morphia获取已经在第一个图中实例化的某个对象,Morphia会返回对已经实例化的对象的引用还是会创建一个新实例?
如果Morphia每次都会返回一个新的对象实例,那么有没有人建议如何最好地创建一个不会复制已实例化对象的Morphia支持的存储库呢?
发布于 2012-04-27 14:01:55
正如我在Morphia中看到的,它将重新阅读每个参考文献。这就是我创建Morphium的原因之一。我在那里集成了一个缓存层,所以如果你读了一个引用,这个引用就不会被再次读到(至少,如果你是按ID搜索的话……)
发布于 2012-05-10 06:19:06
我们在生产中使用morphia,有两种方法可以确保你不会加载引用,这也是我们遇到的。
一种是在主类中定义@Reference元素时使用延迟加载选项。当然,这意味着该行为对于该对象是“全局的”。
更好的方法是不使用Morphia定义@引用,而是自己管理引用。如果你需要代码样本,请告诉我。
发布于 2012-06-11 04:59:08
我也不再使用@Reference,而是声明如下内容:
ObjectId itemId而不是拥有字段项。这有两个好处:(1)它让我可以通过帮助器getObject(...)定义getter。(2)它在Mongo对象中存储了一个简单的ObjectId,而不是一个完整的DBRef,它包含了集合名,因此大约是数据大小的两倍。
https://stackoverflow.com/questions/10325365
复制相似问题