Monthly Archives: October 2018
Java Beans and DTOs
DTO (Data Transfer Object)
Data Transfer Object is a pattern whose aim is to transport data between layers and tiers of a program. A DTO should contain NO business logic
public class UserDTO {
String firstName;
String lastName;
List<String> groups;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public List<String> getGroups() {
return groups;
}
public void setGroups(List<String> groups) {
this.groups = groups;
}
}
Java Beans
Java Beans are classes that follows certain conventions or event better they are Sun/Oracle standards/specifications as explained here:
https://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html
Essentially, Java Beans adhere to the following:
- all properties are private (and they are accessed through getters and setters);
- they have zero-arg constructors (aka default constructors)
- they implement the Serializable Interface
The main reason why we use Java Beans is to encapsulate
public classBeanClassExample() implements java.io.Serializable { private int id; //no-arg constructor public BeanClassExample() { } public int getId() { return id; } public void setId(int id) { this.id = id; } }
So, yeah what is the real difference? If any?
In a nutshell, Java Beans follow strict conditions (as discussed above) and contain no behaviour (as opposed to states), except made for storage, retrieval, serialization and deserialization. It is indeed a specification, while DTO (Data Transfer Object) is a Pattern on its own. It is more than acceptable to use a Java Bean to implement a DTO pattern.
You must be logged in to post a comment.