假设我可以说我有一个名为Person
的域对象。它看起来像这样:
public class Member {
private final String firstName;
private final String lastName;
private final String email;
private final String password;
public Member(String firstName, String lastName, String email, String password) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.password = password;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getEmail() {
return email;
}
public String getPassword() {
return password;
}
}
我还有一个MemberRepository接口,用于定义基本的CRUD和其他一些含糖的方法。
现在假设我想使用Morphia在MongoDB实例中保留此域对象。我已经创建了我的MorphiaMemberRepository实现,但我不确定的是如何尽可能少地存储域对象。
任何Morphia用户都知道我需要创建ObjectId
类型的ID字段并使用@Id
对其进行注释。另外,我需要使用@Entity("members")
注释该类。我不一定想用Morphia / MongoDB特定的注释来混淆我的好域名对象。
所以...堆叠器,我应该怎样做才能使这个实现尽可能干净?
答案 0 :(得分:1)
这是Morphia的要求(至少是@Id)。注释不需要更改使用对象或序列化的方式。它们只是大多数程序忽略的额外元数据;它们是无害的。
如果您有一个唯一字段,那么您不需要添加任何新字段,只需使用@Id标记并完成它。
如果您真的不想这样做,可以在morphia中手动创建元数据来处理您的类,但由于该过程不通过任何外部配置格式公开,因此这将更加有效。 / p>
答案 1 :(得分:0)
假设有IMember Member implements IMember
。 Getter方法在IMember中定义。
另一个类MorphiaMember implements IMember
根据需要进行注释并具有ID字段(id不总是ObjectId)。
每个类都有一个工厂方法
public static Member from(IMember mi) { ... }
如此典型的工作流程将是:
MemberRepository repo = ...
Member m = Member.from(repo.get(some_id))
...
Member m2 = ...
repo.save(MorphiaMember.from(m))