java - 在不向域对象添加不必要的注释的情况下使用 Morphia 来持久化域对象的策略?

标签 java mongodb annotations morphia

假设,假设我有一个名为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 接口(interface),它定义了基本的 CRUD 和一些其他含糖方法。

现在假设我想使用 Morphia 将这个域对象保存在 MongoDB 实例中。我已经创建了我的 MorphiaMemberRepository 实现,但我不确定如何以尽可能少的困惑存储域对象。

任何 Morphia 用户都知道我需要创建类型为 ObjectId 的 ID 字段并使用 @Id 对其进行注释。此外,我需要使用 @Entity("members") 注释该类。我不一定想用 Morphia/MongoDB 特定的注释弄乱我漂亮的域对象。

所以...堆垛机伙伴们,我应该怎么做才能使这个实现尽可能干净?

最佳答案

这是 Morphia 的要求(至少是 @Id 的要求)。注释不需要更改您使用对象或序列化的方式。它们只是大多数程序忽略的额外元数据;它们是无害的。

如果您有一个独特的字段,那么您不需要添加任何新字段,只需用@Id 标记它并完成它。

如果您真的不想做任何这些,您可以在吗啡中手动创建元数据来处理您的类,但这将需要更多工作,因为该过程不会通过任何外部配置格式公开。

关于java - 在不向域对象添加不必要的注释的情况下使用 Morphia 来持久化域对象的策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464989/

相关文章:

MongoDB 错误无法连接到服务器

java - Spring - 多个@Component

java - 运行android应用程序时出现运行时错误

java - 休息电话的单元测试

javascript - 是否有一个数据存储,我可以在其中拥有一个 json 计数器和增量将填充树?

scala - 卡斯巴/礼拜 : How to query a field that a part of a string is contained?

java - 更改 JButton 的大小和焦点上标签的文本 JButton 的增益和丢失事件

java - 我们可以在独立应用程序中使用数据访问层吗?

java - 在包上使用 @ParametersAreNonnullByDefault 注释时,IntelliJ 是否可以自动生成代码以对参数进行空检查

android - 没有使用maven将注释处理(生成的)源编译成apk