DTO, DAO, VO 차이
DTO와 DAO차이
DTO는 데이터 전송객체이고, DAO는 데이터 액세스 객체입니다.
DTO와 VO의 차이
DTO는 setter와 getter를 모두 가지고 있지만, VO는 주로 getter만을 가집니다.
DTO(Data Transfer Object) : 데이터 전송 객체
DTO는 데이터의 전송과 관련된 클래스로, 주로 여러 데이터 필드를 가지며, 데이터 전달을 위한 용도로 설계됩니다. 주로 비즈니스 로직과 데이터베이스 사이에서 데이터 교환을 위해 사용되며, 데이터베이스와의 통신을 최적화하는 데 도움이 됩니다.
DTO 예제
public class UserDTO {
private int id;
private String username;
private String email;
public UserDTO(int id, String username, String email) {
this.id = id;
this.username = username;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "UserDTO{" +
"id=" + id +
", username='" + username + '\'' +
", email='" + email + '\'' +
'}';
}
}
DAO(Data Access Object) : 데이터 액세스 객체
DAO는 데이터베이스나 영구 저장소에 접근하기 위한 객체로, 데이터 액세스 작업을 캡슐화하고 비즈니스 로직과 데이터베이스 간의 결합을 최소화합니다. 주로 CRUD(Create, Read, Update, Delete) 기능을 제공하며, 데이터베이스에 대한 접근을 추상화하여 애플리케이션의 유연성과 유지보수성을 향상시킵니다.
DAO예제
import java.util.List;
public interface UserDAO {
UserDTO getUserById(int id);
List<UserDTO> getAllUsers();
void addUser(UserDTO user);
void updateUser(UserDTO user);
void deleteUser(int id);
}
import java.util.ArrayList;
import java.util.List;
public class UserDAOImpl implements UserDAO {
private List<UserDTO> users = new ArrayList<>();
@Override
public UserDTO getUserById(int id) {
for (UserDTO user : users) {
if (user.getId() == id) {
return user;
}
}
return null;
}
@Override
public List<UserDTO> getAllUsers() {
return users;
}
@Override
public void addUser(UserDTO user) {
users.add(user);
}
@Override
public void updateUser(UserDTO user) {
for (UserDTO u : users) {
if (u.getId() == user.getId()) {
u.setUsername(user.getUsername());
u.setEmail(user.getEmail());
return;
}
}
}
@Override
public void deleteUser(int id) {
users.removeIf(user -> user.getId() == id);
}
}
VO(Value Object) : 값 객체
VO는 불변(immutable)하게 설계되며 변경이 불가능합니다. 이 객체는 값을 나타내는데 사용되며, 객체의 상태를 변경하지 않고 읽기만 가능합니다.
VO예제
public class Coordinates {
private final int x;
private final int y;
public Coordinates(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
DTO, DAO, VO를 집으로 비유한다면?
DTO (Data Transfer Object): 이 집 안에 있는 가구들과 같습니다. 이 집으로 가구를 옮겨야 할 때, 그 가구들을 담아서 옮기는 트럭이라고 생각하시면 됩니다. DTO는 데이터를 담고 있는 객체로, 여러 데이터 필드를 가질 수 있습니다.
DAO (Data Access Object): 이 집에 들어가거나 나갈 때 사용하는 열쇠를 관리하는 부동산 회사 직원과 같습니다. 이 직원은 집에 대한 액세스를 관리하고, 집에 들어가거나 나갈 수 있도록 열쇠를 제공합니다. DAO는 데이터베이스나 다른 영구 저장소에 접근하기 위한 객체로, 데이터 액세스 작업을 캡슐화합니다.
VO (Value Object): 집 안에 있는 고정된 가구나 시설과 같습니다. 이들은 집이 건설된 후에는 변경되지 않습니다. VO는 불변(immutable)하고 변경 불가능한 객체로, 주로 데이터의 일관성을 유지하는 데 사용됩니다.
'IT관련 > 이론' 카테고리의 다른 글
A* Astar 스타 알고리즘 (1) | 2024.06.14 |
---|---|
AVL Tree - AVL 트리란? (0) | 2024.06.12 |
스레드란? java Thread 예시 (0) | 2024.05.29 |
인터페이스란? java interface 예시 (0) | 2024.05.28 |
SQL 스토어드 프로시저 만드는 방법 (0) | 2024.05.13 |