假设,假设我有一个名为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和一些其他的sugary方法。
现在假设我想使用morphia将这个域对象持久化在mongodb实例中。我已经创建了morphiamemberrepository实现,但我不确定的是如何以尽可能少的混乱来存储域对象。
任何morphia用户都知道我需要创建一个
ObjectId
类型的i d字段,并用@Id
对其进行注释。此外,我还需要用@Entity("members")
注释类。我不一定想用morphia/mongodb特定的注释来混淆我的域对象。所以…堆料工们,我该怎么做才能让这个实现尽可能干净?
最佳答案
假设存在imember soMember 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))