In an object-oriented environment, it’s a common requirement to create objects (instantiating a class), which is the basic building block for Java code. So, we have to know the object before creating and using them.

In a complex object-oriented environment, there will be lots of objects. Each object will have a role and responsibility — it’s as simple as teamwork, for example, DAO, BO, and DTO. A DAO acronym, as a data access object, knows how to communicate with the back-end, which may not be known to the BO(business object). This is because BO will have a different role and responsibility.

Source: DZone