MongoDb と morphia を使用するのはこれが初めてで、データベース全般についてはまったくの初心者です。モルフィアを使用してコードをどのように整理すればよいか疑問に思っています。私はモルフィアのドキュメントDAO
に書かれているようなものを使用することを検討していましたが、彼らがそうしているように見える方法では、私が持っているモデルオブジェクトごとに作成する必要があります。私は基本的に Model オブジェクトに自分自身を保存する機能を与えるという遊びの方法論が好きでしたが、ここで何が起こっているのかについて漠然とした考えしか持っていません。それで。これまでのコードは、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 接続を維持するために存在します。