我是新的(今天)到NoSql MongoDb并试图了解Morphia 我希望有一个这样的@Entity:
如果我有3个名为
的表(集合)
STAT
好友列表
用户数据
我在Userdata中保存了UserData.Class,在Stat中保存了Statistic.Class等等......
我的想法是,如果我给每个用户一个唯一的ObjectId UUID nr,然后每个Statistic和FriendList都有这个UUID nr作为ObjectId。因为如果程序只需要运行统计,它将仅加载/处理Statistic。
@Entity
public class UserData {
@Id private ObjectId id = "UUID 123456789;
public String userName = "";
public String password = "";
@Embedded
private Statistic statistic;
@Embedded
private FriendList friendList;
}
如果有类似18000 /小时的请求来获取UserData,那么声明它们就不会更快: (我使用相同的ObjectId,它们存储在单独的集合(表格)
中@Entity
public class UserData {
@Id private ObjectId id = "UUID 123456789;
public String userName = "";
public String password = "";
}
@Entity
public class Statistic {
@Id private ObjectId id = "UUID 123456789;
public int loginTimes;
public String gps;
}
@Entity
public class FriendList {
@Id private ObjectId id = "UUID 123456789;
public ArrayList<String> fiends;
}
答案 0 :(得分:2)
我认为正确的是使用DBRef或Embedded。
如果你想在其他对象中使用列表的某个对象,请使用DBRef,否则使用embedded。
例如,在博客文章中,评论永远不会在其他帖子中使用,因此,其嵌入式。
所以,请使用像:
这样的东西@Entity
public class UserData {
@Id private ObjectId id = "UUID 123456789;
public String userName = "";
public String password = "";
@Embedded
private Statistic statistic;
@Embedded
private List<Friends> friendList;
}
希望它有所帮助。
答案 1 :(得分:0)
嵌入式总是更快,因为参考存储在不同的物理位置。