【问题标题】:Play 2.0 Morphia design pattern with mongodb用 mongodb 玩 2.0 Morphia 设计模式
【发布时间】:2012-05-01 15:29:49
【问题描述】:

这是我第一次使用 MongoDb 和 morphia,总的来说我对数据库还很陌生。我想知道我应该如何用 morphia 组织我的代码。我正在考虑使用DAO 就像它在morphia documentation 上所说的那样,但是他们似乎正在这样做,我必须为我拥有的每个模型对象创建一个DAO。我喜欢 play 的方法,即基本上赋予模型对象自救的能力,但我对这里发生的事情只有模糊的概念,所以我不确定如何用 morphia 来实现这一点,或者是否需要这样做所以。到目前为止,我为 User 模型的骨架编写的代码如下所示。

@Entity("user")
public class User extends BasicDAO<User, ObjectId>{
    @Id ObjectId id;

public String firstName;

public String lastName;

public String email;

@Indexed public String username;

public String password;

public User(Mongo mongo, Morphia morphia){
    super(mongo, morphia, "UserDAO");
}
public User(){
    this(DBFactory.getMongo(), DBFactory.getMorphia());
}

public void save(){
    ds.save(this);
}

public static User findByUsername(String uname){
    return DBFactory.getDatastore().find(User.class, "username =", uname).get();
}

public static boolean authenticate(String uname, String pword){
    User user = DBFactory.getDatastore().createQuery(User.class).filter("username", uname).filter("password", pword).get();
    if(user == null)
        return false;
    else
        return true;
}
}

它目前正在抛出一个StackOverflowException,我不知道为什么,但这是一个可以尝试完成的合理模式吗?

另外,DBFactory 基本上只是为了维护单例 mongodb 连接而存在。

【问题讨论】:

  • 他显然在使用 java 并希望组织他的代码,我认为 scala 示例没有任何帮助

标签: mongodb dao playframework-2.0 morphia


【解决方案1】:

Play 2.0 有一个使用 MongoDb 的模块,我认为你应该试一试 https://github.com/vznet/play-mongo-jackson-mapper#readme

【讨论】:

    【解决方案2】:

    我开始在游戏框架 2.x 中使用 Marphia。在我看来,它比杰克逊映射器更复杂。我按照这个例子安装了marphia插件:https://github.com/czihong/playMongoDemo

    【讨论】:

    • 您能否详细说明 Morphia 的数据转换比 Jackson 的更复杂?
    • code.google.com/p/morphia 正如您在 marphia 主页中看到的,有很多注释可供自定义。而且它还提供了一个类型安全的 dao。
    • 是的,但是 Jackson 也可以使用注释(包括外部“混合”注释)进行高度配置。因此,虽然我不怀疑 Morphia 有很多自己的功能,但我在主页上只看到基本的注释。没有什么特别复杂的。所以我很好奇你认为这里很复杂,特别是。鉴于您将其与杰克逊进行了比较。
    • @KarthikSankar 他在哪里初始化 MorphiaObject?
    • @nightograph MorphiaObject 在github.com/czihong/playMongoDemo/blob/master/app/Global.java上初始化
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多