lundi 5 octobre 2020

How to create a MongoDB DAO layer like JPA using the entity manager does to facilitate all other DAO class in term of design?

Knowing that there are some frameworks to do it in real-world situation. As I learning from scratch, I wonder is that possible to create pure MongoDB DAO as a layer on top of the Service class to do CRUD operation that also facilitate other DAO use it?

For example, below is my Generic DAO class to operate CRUD process.

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();

}

Then, DAO class should implements its operations

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
}

User Service class

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();
        }
    }

Having said that, I want to put MongoDB "layer" between the DAO and Service class to do the CRUD operation. I wonder is it necessary, otherwise, how to do it to help the UserService with UserDAO class?

Aucun commentaire:

Enregistrer un commentaire