假设,假设我有一个名为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))

10-02 06:54