데이터를 목적에 따라 정의하는 구조체
DTO( 데이터를 전달하기 위한 객체 ), VO( 값 자체를 포현하는 객체 ), DAO( Database에 접근하는 역할을 하는 객체), Entity (실제 DB 테이블과 매핑되는 클래스 )에 대해 알아볼 예정이다.
DTO( Data Transfer Object)
- 계층 간 데이터 교환을 위해 사용하는 객체
- 로직을 가지지 않은 순수한 데이터 객체(Getter/Setter)만을 가짐
- 주로 DB에서 데이터를 갖고오거나 통신(FrontEnd)에서 요청하거나 응답할 때 데이터를 담아 전달할 때 사용한다.
class UserSignInRequestDto{
private String userId;
private String password;
}
VO(Value Object)
- 값 자체를 표현하는 객체
- 데이터를 담는 용도(데이터 수정x, 불변성, 읽기전용)
- 한번 생성되면 내용 변경이 불가능하다.
- 주로 필드값을 final 설정을 하게 된다.
- Getter 만을 가진다.
@AllArgsConstructor
@Getter
class Address{
private final String city;
private final String zipcode;
}
DAO(Data Access Object)
- Database에 접근하는 역할을 하는 객체이다.
- 서비스 모델과 데이터베이스를 연결하는 역할을 한다
- 데이터의 CRUD작업을 실행하는 클래스이다.
- 비즈니스 로직에서 DB의 직접적인 조작 없이 데이터를 다룬다.
ex) 사용자 로그인 후 아이디랑 닉네임을 포함하여 응답을 처리해준다
class UserSignInResponseDto{
private String userId;
private String nickName;
}
*DAO클래스. 사용자 데이터베이스와 연관된 작업을 모두 명시하며 로그인한 사용자 데이터를 단건 조회해준다.
class UserDao{
public UserSignInResponseDto getUserById(String userId){
String id = "kong9411";
String nickname = "bergerac";
return new UserSignInResponseDto(id,nickname);
}
}
Entity
- 실제 DB 테이블과 매핑되는 클래스. 실제로 존재한다.
- 데이터와 직접적으로 연결되는 백엔드 로직에 있어서 데이터베이스의 테이블에 해당하는 데이터 구조와 일치하는 클래스를 만든다.
- 데이터베이스에 있는 모든 정보를 클래스로 정의한다.
- JPA(Java Persistence API)와 같은 ORM(Object Related Mapping)클래스에서 사용
- DB의 각 레코드와 매핑된다.(테이블 형식을 따른다.
class User{
private Long id;
private String userID;
private String password;
private String name;
private String email;
private Date signUpDate;
}
'JAVA' 카테고리의 다른 글
ENUM (열거형) 자료형 (1) | 2025.03.23 |
---|---|
Wrapper Class (1) | 2025.03.22 |
Stream API (1) | 2025.03.21 |
메서드 참조 (Lambda) (0) | 2025.03.20 |
람다식(Lambda) - 함수형 인터페이스 4가지(Predicate, Function, Consumer, Supplier) (1) | 2025.03.19 |