Member-only story
DAO, DTO, PO, SO, BO, VO… WTF..?

If you are a Java Developer you might have heard of a lot of the following acronyms such as:
- DTO
- DAO
- PO
- SO
- BO
- VO
… and you probably have not much idea of what they mean actually.
Here, in this article i am going to briefly explain what these acronym stands for and for what they represent.
DTO
This is perhaps the most common acronym within the Java Development world. I mean, i am sure everyone has heard the term ‘DTO’ at some point.
DTO basically stands for Data Transfer Object. It is a very common software development pattern especially within the Java world. In fact, many argue that it originated from the Java world of enterprise development.
It is an encapsulated object that contains data to be transferred from one location to another location. When DTO first came about, it was mainly used for encapsulating data fetched from the database and use it as a transfer mechanism to the caller class.
Nowadays, it is more commonly used in a variety of places. From the Data layer (as originally used) to the Web layer where people use it as a Request/Response type object for transferring data between end user clients and the ‘view’ within the Web layer or between user API request to the backend HTTP RESTful or Non-RESTful web services.
A deep dive of this pattern is not within the scope of this article so if you want to know more about this pattern, i really encourage to take a read at my article below on my thoughts on this DTO pattern:
DAO
Another very common pattern which is denoted by the use of an acronym is the DAO pattern.
DAO represents Data Access Object.
Similar to a DTO, DAO resides in the Data layer where its main responsibility is to encapsulate the database access.