2012-05-01 8 views
3

これは私の初めてのMongoDbとmorphiaを使用しており、私は一般的にデータベースにはかなり新しいです。私はどのように私のコードをmorphiaで整理すべきかと思います。私はmorphia documentationのようにDAOを使用していましたが、彼らはそれをやっているようです、私は持っている各モデルオブジェクトのためにDAOを作成する必要があります。私は基本的にModelオブジェクトに自分自身を保存する能力を与えるという遊びの方法論が好きでしたが、ここでは何が起こっているのかが漠然としているので、これをどのようにしてモルフィアで達成するか、そう。私が今までに持っているコードは、Userモデルの骨格のように見えます。Play 2.0 Morphiaデザインパターンwith mongodb

@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接続を維持するためだけに存在します。

+0

彼は明らかにJavaを使用して、彼のコードを整理するために探している、私はScalaの例は、任意のヘルプ – nightograph

答えて

1

あなたはそれを試してみるべきだと思いMongoDBのを扱うためのモジュールを持っています私の意見では、それはジャックソンマッパーより洗練されています。私はmarphiaプラグインをインストールするには、この例に従っ:https://github.com/czihong/playMongoDemo

+0

であるあなたはMorphiaデータ変換がジャクソンさんよりも洗練されているどのように手の込んだでしたとは思いません? – StaxMan

+0

http://code.google.com/p/morphia/ marphiaのホームページには、カスタマイズ可能な注釈がたくさんあります。また、タイプセーフなDAOを提供します。 –

+0

しかし、ジャクソン氏はアノテーション(外部​​の「ミックスイン」アノテーションを含む)を使っても高度に構成可能です。ですからモルフィアの機能が豊富であることは間違いありませんが、ホームページには基本的な注釈は表示されません。特に洗練されたものは何もありません。だから私はあなたがここで洗練されたと思うものについて興味がありました。それをジャクソンと比較すると、 – StaxMan