2012-05-01 35 views
3

這是我第一次使用MongoDb和morphia,我對數據庫一般來說很新。我想知道如何用morphia組織我的代碼。我正在研究使用DAO,就像它在morphia documentation上說的那樣,但是他們似乎在做這件事,我必須爲每個模型對象創建一個DAO。我喜歡Play的方法,基本上給了Model對象自我保存的能力,但我對這裏的內容只有模糊的概念,所以我不確定如何用morphia來實現這一點,或者如果它甚至是可取的所以。到目前爲止,我所看到的代碼對於用戶模型的骨架來說是這樣的。玩2.0 Morong設計模式與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

我開始使用Marphia與遊戲框架2.x版本在我看來,它比傑克遜映射器更復雜。我遵循這個例子來安裝marphia插件:https://github.com/czihong/playMongoDemo

+0

你能否詳細說明Morphia數據轉換如何比Jackson的更復雜? – StaxMan

+0

http://code.google.com/p/morphia/正如您在marphia主頁中看到的那樣,有很多註釋可供自定義。它也提供了一個安全的道。 –

+0

沒錯,但傑克遜可以使用註釋(包括外部「混合」註釋)進行高度配置。所以雖然我不懷疑Morphia有很多它自己的功能,但我在主頁上看不到任何東西,只是基本的註釋;沒有什麼特別複雜的。所以我很好奇你在這裏考慮的是什麼,尤其是。給你比較它與傑克遜。 – StaxMan