Как создать слой DAO MongoDB, подобный JPA, используя entity manager, для облегчения всех других классов DAO с точки зрения дизайна?

#java #mongodb #servlets #design-patterns

#java #mongodb #сервлеты #шаблоны проектирования

Вопрос:

Зная, что есть некоторые рамки для выполнения этого в реальной ситуации. Поскольку я учусь с нуля, мне интересно, возможно ли создать чистый MongoDB DAO в качестве слоя поверх Service класса для выполнения CRUD операций, которые также облегчают его использование другим DAO?

Например, ниже приведен мой общий класс DAO для управления процессом CRUD.

 public interface IGenericDAO<T> {
    public T create(T t);

    public T update(T t);

    public T get(Object id);

    public void delete(Object id);

    public List<T> listAll();

    public Long count();

}
  

Затем класс DAO должен реализовать свои операции

 public class UserDAO implements IGenericDAO<User> {

    MongoDatabase database = dBUtils.getMongoDB();
    MongoCollection <Document> userTbl = database.getCollection("User");

    public UserDAO() {
        super();
    }

    @Override
    public User create(User user) {
        return user;
        
    }
// other CURD below
}
  

Класс обслуживания пользователя

 public class UserService {

    private UserDAO userDAO;   

    public UserService() {
    }


    public void listUser() {

        // need to test
        List<User> listUsers = userDAO.listAll();

    }

    public void create(User user) {

        // this what I want to see. user is saved to db here
        try {
            MongoDatabase database = dBUtils.getMongoDB();
            assert mdb != null;

            // create or get collection
            MongoCollection<User> userTbl = database.getCollection("Users", User.class);              

            User userDoc = new User();

            userTbl.insertOne(userDoc);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  

Сказав это, я хочу поместить «слой» MongoDB между DAO и классом Service для выполнения операции CRUD. Интересно, нужно ли это, иначе, как это сделать, чтобы помочь UserService UserDAO классу with?

Комментарии:

1. Я мог бы использовать morphia, но, вероятно, у меня ограниченные знания, и я хочу попытаться изучить чистый MongoDB, чтобы сначала отображать CRUD в браузере.