3

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

@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 连接而存在。

4

2 回答 2

2

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

于 2012-05-03T14:45:33.203 回答
1

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

于 2012-06-25T03:51:04.727 回答