본문 바로가기

카테고리 없음

dto 와 dao

DAO : data access object

데이터베이스와의 상호작용을 추상화하는 객체.

주로 소프트웨어에서 데이터베이스와의 상호작용을 처리하기위해 사용됨.

 

주요목적

1. 데이터 액세스 추상화 : dao는 db와의 통신 및 상호작용을 추상화하여, 데이터 엑세스 레이어를 제공한다.

이를 통해 비즈니스 로직과, 데이터베이스 상세 구현을 분리하여 코드를 모듈화하고 관리하기 쉽도록 한다.

 

2. crud작업 수행 

3. 보안 및 트랜잭션 관리 

4. 테스트 용이성 : 테스트에서 실제 디비 연결 대신, dao에대한 mock객체를 사용하여 데이터액세스 로직을 테스트할 수 있다.

 

DTO : data transfer object

데이터 전송 객체. 비즈니스 계층과 서비스 계층 간에 데이터 전송 위해 사용된다.

주로 디비에서 가져온 데이터를 비즈니스로직에서 처리하거나 , 클라이언트로 전달 위해 사용.

 

주요목적 

1. 데이터 전송 : 여러 소프트웨어 컴포넌트 간에 데이터 전송하는 데 사용.

db에서 검색된 데이터나, 외부시스템에서 가져온 데이터를 비즈니스 로직에 전달하거나,

비즈니스 로직에서 처리한 데이터를 프레젠테이션 계층(아마 view쪽인듯) 으로 전달 위해 사용.

2. 데이터 캡슐화 : 관련 데이터를 하나의 객체로 만들어 캡슐화하여 전송한다. 이를통해 데이터를 구조화하고 관련데이터 함께전송가능하다.

3. 데이터 전송의 효율화. : 여러 필드를 하나의 객체로 묶어 전송함으로써 네트워크 트래픽 줄이고 데이터 전송을 효율화.

 특히 클라이언트-서버 간의 통신에서 유용.

4. 도메인 객체와의 분리 : dto는 비즈니스 로직을 포함하지 않으며, 순수하게 데이터전달하는 역할만 수행.

이를통해 도메인 객체와의 분리를 유지하고 필요한 최소한의 정보만 전달함.

 

 

dao예시..

 

굳이 이렇게 레이어를 또 둬서 분리하는게 맞나?

목적은 알거같은데 효율, 보안 면에서 정확히 어떤이점이 있는지

예시로 체감하고 싶다!