저고데

[Spring Boot]13. DAO, DTO 본문

Spring Boot

[Spring Boot]13. DAO, DTO

진철 2024. 1. 17. 00:18
728x90
반응형

간단한 CRUD 기능을 가진 게시판을 만드는 과정에서 궁금한 점이 하나 생겼다.

그건 바로 DAO와 DTO였다.

여러 코드를 참고하는 도중에 매번 보이는 단어들이었는데, 이들은 과연 무엇일까?

우선 간략하게 말하자면, 스프링 부트에서 제공하는 기능은 아니다.

개발자가 코드를 깨끗하게 유지하고 관리하기 위해 일반적으로 사용되는 설계 패턴이나 규칙을 뜻한다.

이들은 소프트웨어 개발에서 데이터를 전송하거나 저장하기 위해 사용되는 객체들을 나타낸다.

DAO : Data Access Object

직역하자면, 데이터를 접근하는 객체이다.

데이터베이스와의 상호 작용을 담당하며, 주로 데이터베이스 연동을 위한 로직(CRUD 등)이 구현된다.

데이터베이스에 접근하기 위한 메서드를 지니고 있으며, 인터페이스 형태로 캡슐화되어있다.

데이터베이스와의 연동을 캡슐화하였기 때문에 비즈니스 로직과 데이터베이스 접근을 분리하여 단순히 데이터베이스와의 통신에만 집중할 수 있기 때문에 유지보수성을 향상시킨다.
Service나 Controller 등 여러 계층에서 데이터베이스와의 상호 작용을 위해 DAO를 호출한다.

스프링부트에서는 JPA를 사용하여 DAO의 구현을 간소화할 수 있다는 장점이 있다.

DTO : Data Transfer Object

데이터를 전송하는 객체이다.

주로 서비스 계층과 뷰 간의 데이터 전달을 위해 설계된다.

특히 뷰에서 컨트롤러로 데이터를 전달하거나, 컨트롤러에서 서비스 계층으로 데이터를 전달하는 데 유용하다.
엔티티나 도메인 객체의 일부 또는 전체 데이터를 전송하기 위한 용도로 사용된다.

앞서 DAO와 같이 비즈니스 로직을 포함하지 않는 순수한 데이터 저장소라고 보면 된다.

뷰 레이어에서 사용자에게 보여줄 데이터를 캡슐화하고, 여러 도메인 객체에서 필요한 부분만을 포함할 수 있다.

스프링부트에서는 MVC를 통해 DTO를 효과적으로 활용할 수 있다는 장점이 있다.

728x90
반응형