Это мой первый раз, когда я использую MongoDb и morphia, и я довольно новичок в базах данных в целом. Мне интересно, как мне организовать свой код с помощью morphia. Я рассматривал возможность использования DAO
, как указано в документации по morphia, но как они это делают, мне пришлось бы создать 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.