반응형
DAO (Data Access Object)
데이터베이스와 상호작용을 담당하는 객체를 말합니다.
데이터베이스에 접근하기 위한 로직을 분리하기 위해 사용합니다.
직접 데이터베이스에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행합니다.
DAO 예시 코드
public class UserDAO {
public void createUser(User user) {
// 데이터베이스에 유저 정보를 저장
}
public User getUserById(int userId) {
// 데이터베이스에서 유저 정보 조회
}
public void updateUser(User user) {
// 데이터베이스에서 유저 정보 업데이트
}
public void deleteUser(int userId) {
// 데이터베이스에서 유저 삭제
}
}
DTO (Data Transfer Object)
계층 간에 데이터를 전송하는 객체입니다. 주로 단순한 데이터 구조를 가집니다.
이 객체는 데이터베이스 엔티티 객체와는 달리, 여러 다른 데이터 객체를 하나로 묶어서 전송할 수 있습니다.
DTO 예시 코드
public class UserDTO {
private String name;
private String email;
private int age;
// Getter, Setter, Constructor 생략
}
VO (Value Object)
불변 객체로, 동일한 값을 가지는 VO 객체는 항상 동일하게 취급합니다.
주로 식별자가 없고, 단순히 값으로만 비교되는 객체로 사용됩니다.
주로 엔티티 속성 값들을 그룹화하거나, 도메인 모델에서 중요한 의미를 가지는 객체로 사용됩니다.
VO 예시 코드
public class Money {
private final int amount;
public Money(int amount) {
this.amount = amount;
}
public int getAmount() {
return amount;
}
// 동등성 비교 및 해시 코드 계산
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Money money = (Money) obj;
return amount == money.amount;
}
@Override
public int hashCode() {
return Integer.hashCode(amount);
}
}
DAO, DTO, VO 차이점 정리
DAO
데이터베이스와 상호작용을 처리하는 역할을 합니다.
주요 특징으로는 CRUD 작업을 수행하며, 비즈니스 로직과 데이터베이스 액세스를 분리합니다.
DTO
계층 간 데이터 전송을 위한 객체입니다.
주요 특징으로는 데이터를 묶어서 전송하며, 주로 네트워크나 계층 간 데이터 전송에 사용합니다.
VO
불변 객체, 값 자체를 표현합니다.
값만 비교되며, 객체의 상태는 변경되지 않습니다. 도메인 모델에서 중요한 값을 표현합니다.
반응형
'BackEnd > Java' 카테고리의 다른 글
[JAVA] Garbage Collection (0) | 2024.11.03 |
---|---|
[JAVA] 자바 컴파일 과정 (0) | 2024.03.25 |
[Java] 자바 프로그래밍 시작하기 (0) | 2024.01.10 |