DAO (Data Access Object) : 데이터베이스와 연결하여 데이터를 조회, 생성, 수정, 삭제 등의
데이터의 접근이나 처리 작업을 수행하는 객체를 말한다. DAO는 비즈니스 로직을 분리하여 관리하고,
데이터베이스 변경 시 DAO만 수정하면 되므로 유지보수가 용이하다. DAO는 주로 VO를 단위로 처리하고,
DAO를 호출하는 객체는 DAO가 내부에서 어떤 식으로 데이터를 처리하는지 알 수 없도록 구성한다.
VO (Value Object) : 값을 담는 객체로, 불변성(immutable)하다는 특징을 지니며, 데이터를 담고 있는 역할을
한다. 주로 하나의 테이블을 나타내는 정보를 담는다. (값을 보관하는 용도)
- VO는 DTO와 유사한 모습이지만 VO는 데이터베이스의 엔티티를 자바의 객체로 표현한 것이 더 가깝고,
DTO는 getter/setter를 이용해서 자유롭게 데이터를 가공할 수 있는 반면에 VO는 데이터 자체를 의미하기
때문에 getter만 사용하게 되는 경우가 많다.
Entity (엔티티) : 데이터베이스에 저장된(될) 실제 데이터를 나타내는 객체로, Entity는 데이터를 보유하고 있으며,
데이터를 처리하기 위한 비즈니스 로직도 함께 가질 수 있다.
- Spring 에서는 영속성 컨텍스트에 속한 객체를 의미하기도 한다.
DTO (Data Transfer Object) : 계층 간 데이터 교환을 위해 사용되는 객체로, 여러 개의 데이터를 묶어서 하나의 객체로
전달하는 것을 말하며, 비즈니스 로직을 갖지 않는다. DTO는 주로 여러 개의 VO나 Entity에서 필요한 데이터를 조합하여 전달하거나,
반대로 여러 개의 VO나 Entity에 데이터를 나누어 전달할 때 사용된다.
이를 통해 데이터베이스와의 통신을 최적화 하고, 성능을 향상시킬 수 있다.