jim*_*rra 4 java annotations mongodb morphia
当写入文件Mongodb使用Morphia,这样的结构将被写入没有任何问题,并没有需要的@Embedded注释:
@Entity
public class Blog {
@Id
private String id;
private List<Comment> comments;
}
Run Code Online (Sandbox Code Playgroud)
该comments字段被愉快地存储为嵌套Comment元素数组(Comment是一个没有注释的普通 POJO)。
但是,Morphia文档建议我应该使用它:
@Entity
public class Blog {
@Id
private String id;
@Embedded
private List<Comment> comments;
}
Run Code Online (Sandbox Code Playgroud)
但是在我的测试中,使用@Embedded注释似乎并没有比简单地编写没有注释的结构做任何额外的事情。
那么@Embedded注解实际上是做什么的呢?除了简单地写入数据之外,它是否会影响查询、索引或其他一些存储功能的能力?
Serializable通常不与 Morphia 一起使用。 @Embedded有点暧昧的东西,原本的意图似乎已经迷失了。事实上,在我正在制作 Morphia 官方 2.0 的 fork 中,我已经限制它只适用于类级别。这告诉 Morphia 映射类型,但不会使映射丢失的@Id注释失败。在该分支中,如果您希望指定字段名称以外的名称,您只需@Property像对待任何非嵌入类型一样使用即可。
我希望这至少能澄清一点。
根据经验,您应该@Embedded选择依赖于父对象的对象(因此在其之外没有生命),并且不在对象之间共享。
默认情况下,Morphia 使用字段名称作为 Mongo 中的值名称。这可以通过在 @Embedded 注释上指定名称来覆盖:
@Embedded("blog_comments")
private List<Comment> comments;
Run Code Online (Sandbox Code Playgroud)
即使没有,@Embedded您仍然可以使用 java 类作为字段类型,只要该类实现了java.io.Serializable. 然而,该字段将以二进制格式存储在 MongoDB 中,而不是如上所示的结构化数据。
| 归档时间: |
|
| 查看次数: |
2053 次 |
| 最近记录: |