DAO(Data Access Object) : Mapper로, DB와 Spring사이에서 데이터를 주고받는 객체
커넥션 같은 것을 하나만 두고 여러 사용자가 DAO의 인터페이스를 사용하여 필요한 자료에 접근 하도록 하는 것이 DAO의 개념이다.
DB에 대한 insert,update,delete,select를 처리한다.
DTO(Data Transfer Object) : 입력(Read&Write)
데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 처리하는 개체이다.
Data에 접속하는 객체이다. 여기서 Data란 일반적인 Database도 될 수 있고, 파일도 될 수 있으며, 메모리도 될 수 있고, 기타 다른 저장소도 될 수 있다.
DTO는 프로세스 사이에서 데이터를 전송하는 객체를 의미한다. 이것을 이용하는 프로세스간의 커뮤니케이션이 주로 개별 호출이 부담스러운 작업일 경우가 많은 원격 인터페이스(예:웹 서비스)에 의해 이루어지기 때문이다.
대부분의 개별 호출이 클라이언트와 서버 간의 왕복 시간을 소모하기 때문에, 호출 횟수를 줄이는 방법 중 하나는 몇번의 호출에 의해 전송될 데이터를 모으는 DTO를 이용해서 한번만 호출하게 하는 것이기 때문이다.
VO(Value Object) : VO는 출력(Read only)
Value Object는 DTO와 동일한 개념이나 차이점은 read only 속성을 갖는다.
Value Object는 관계형 데이터 베이스의 레코드(행=튜플)에 대응되는 자바 클래스이다.
형태는 DB레코드를 구성하는 필드(열)들을 Value Object의 Attribute로 하고 해당 변수에 접근할 수 있는 Getter,Setter 메소드의 조합으로 클래스가 형성되어진 클래스이다.
특성은 대체로 불변성이고 equals()로 비교할 때 객체의 모든 값을 비교해야 한다.
프로그램의 사용자가 화면에서 어떤 데이터를 입력하거나 조회 요청이 왔을 때 입력된 데이터나 조회하는 조건을 VO에 담아서 DAO에 요청하면 DAO에 요청하면 DAO는 저장소(일반적으로 Database)로부터 데이터를 입력하거나 조회한 후 그 결과를 돌려주게 된다.
VO는 간단한 독립체(Entity)를 의미하는 작은 객체를 의미한다.
VO의 같음은 그 정체성에 의해 결정되지 않는데, 그뜻은 두 VO들은 그 두 가지가 같은 값을 갖고 있을 때 같은 것이지 같은 객체라고 해서 같지 않다는 것이다. ->이 부분은 아래의 VO와 DTO의 비교를 보면 이해하기 쉬울것이다.
VO와 DTO의 비교
DTO의 나머지 속성은 VO와 똑같다고 생각된다.
DTO는 메소드 호출 횟수를 줄이기 위해 데이터를 담고 있는 녀석으로, VO는 값이 같으면 동일 오브젝트라고 볼 수 있는 것으로 표현하고 있다.
DTO a = new DTO(1);
DTO b = new DTO(1);
이라고 했을 때, a != b 이지만,
VO a = VO(1);
VO b = VO(1);
이라고 했을 때는 a == b 라고 정의하는 형태이다.
CRUD
CREATE(INSERT), READ(SELECT), UPDATE, DELETE
'Backend' 카테고리의 다른 글
낙관적 잠금과 비관적 잠금으로 알아보는 동시성 처리 (1) | 2024.05.02 |
---|---|
[N+1 문제 , 연관관계] 일대일 관계에서의 N+1문제 (0) | 2023.03.28 |
Jmeter을 이용한 성능 테스트 (0) | 2023.03.25 |
[Error] No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. (0) | 2023.01.18 |