Mongodb Morphia与对象图

Mongodb Morphia与对象图,mongodb,morphia,Mongodb,Morphia,我还没有使用Morphia,但我正在考虑将其用于当前项目 假设我有一个带有大量@Reference注释的POJO,我让Morphia从数据库中获取对象图。如果我接着进行另一个DAO或数据存储调用,并要求Morphia获取在第一个图中已实例化的某个对象,Morphia会返回对已实例化对象的引用,还是会创建一个新实例 如果Morphia每次都返回一个新的对象实例,是否有人建议如何最好地创建一个Morphia支持的存储库,该存储库不会复制已实例化的对象?正如我在Morphia中看到的,它将重新读取每个

我还没有使用Morphia,但我正在考虑将其用于当前项目

假设我有一个带有大量@Reference注释的POJO,我让Morphia从数据库中获取对象图。如果我接着进行另一个DAO或数据存储调用,并要求Morphia获取在第一个图中已实例化的某个对象,Morphia会返回对已实例化对象的引用,还是会创建一个新实例


如果Morphia每次都返回一个新的对象实例,是否有人建议如何最好地创建一个Morphia支持的存储库,该存储库不会复制已实例化的对象?

正如我在Morphia中看到的,它将重新读取每个引用。
这就是问题之一,我为什么要创造。我在那里集成了一个缓存层,所以如果您读取一个引用,这个引用将不会被再次读取(至少,如果您按ID搜索…)

正如我在Morphia中看到的,它将重新读取每个引用。
这就是问题之一,我为什么要创造。我在那里集成了一个缓存层,所以如果你读取一个引用,这个就不会被再次读取(至少,如果你按ID搜索…)

我们在生产中使用morphia,有两种方法确保你不会加载引用,这也是我们遇到的

一种是在主类中定义@Reference元素时使用延迟加载选项。这当然意味着该行为对该对象是“全局的”


更好的方法是不要使用Morphia定义@Reference,而是自己管理引用。如果您需要代码示例,请告诉我。

我们在生产中使用morphia,有两种方法确保您不会加载引用,这也是我们遇到的问题

一种是在主类中定义@Reference元素时使用延迟加载选项。这当然意味着该行为对该对象是“全局的”


更好的方法是不要使用Morphia定义@Reference,而是自己管理引用。如果您需要代码示例,请告诉我。

我也不再使用@Reference,而是声明如下内容:

 ObjectId itemId

而不是有一个字段项。这有两个好处:(1)它允许我通过我用对象缓存编写的helper getObject(…)方法定义getter;(2)它在Mongo对象中存储一个简单的ObjectId,而不是包含集合名称的完整DBRef,因此大约是数据大小的两倍。

我也不再使用@Reference,而是声明如下内容:

 ObjectId itemId
而不是有一个字段项。这有两个好处:(1)它允许我通过我用对象缓存编写的helper getObject(…)方法定义getter;(2)它在Mongo对象中存储一个简单的ObjectId,而不是包含集合名称的完整DBRef,因此大约是数据大小的两倍