DAO를 사용하는 목적

옹심이·2024년 12월 17일
0
post-thumbnail

시작하며

이전 시간에는 DTO에 대해 알아보았다.

앞으로 DAO를 포함하여 객체의 종류 3 가지를 더 공부할 예정이다.

이번 포스트는 DAO !

DAO에 관한 자문자답

DAO란?
나의 답 : 데이터베이스 엑세스를 위한 객체

DAO와 DTO는 긴밀하게 연관되어 있나?
나의 답 : 데이터베이스에서 데이터를 넣고 불러올 때 DTO와 함께 사용되어야 하기 때문에 긴밀한 면이 있다고 생각한다.

답이 맞는지 정확히 모르겠다. 공부하자 DAO

DAO란?

DAO는 데이터베이스 접근과 관련된 역할을 지닌 객체를 의미한다.

DAO의 역할은 다음과 같다.

  1. 데이터베이스와의 연결을 관리
  2. 데이터베이스에 연결해 데이터에 대한 CRUD 연산 수행
  3. 보안 취약성을 고려한 쿼리 작성

정리하면, DAO는 데이터에 접근하기 위해 만들어진 객체이다. 스프링 개발자에게는 익숙한 Repository와 같은 개념이다.

DAO의 역할은 위에서 말한 세 가지 말고도 더 많다.

하지만 이를 전부 나열할 필요 없는 이유는, DAO의 역할 보다는 DAO가 만들어진 목적에 집중하는 것이 바람직하기 때문이다.

DAO가 만들어진 목적은 뭐야?

DAO는 도메인 로직과 데이터베이스 연결 로직을 분리하기 위해 만들어졌다.

스프링 개발자는 거의 100프로 데이터베이스 관련 로직을 작성하기 마련이다. 이 과정에서 데이터베이스 연결, 쿼리 작성, 응답 결과를 객체에 매핑과 같은 일을 한다.

이러한 과정은 서비스 구현에 꼭 필요하기 때문에 필연적이다. 그러나 이러한 작업이 어플리케이션의 핵심은 아니다.

데이터베이스와의 상호작용은 데이터를 저장하고 검색하는 기술에 불과하다. 실제 어플리케이션의 핵심은 요구 사항을 해결하는 비즈니스 로직과 도메인이다.

만약 비즈니스 로직과 데이터베이스 관련 로직이 섞여 있다면 어떨까? 생각만해도 보기 싫다.

코드를 볼 때 데이터베이스 관련 로직 때문에 어플리케이션의 핵심인 비즈니스 로직 개발에 집중하기 어려울 것이다.

이 때문에 선배 개발자들은 비즈니스 로직과 데이터베이스 관련 로직을 분리하고 싶어했으며 그 결과 DAO가 탄생하였다.

이제 개발자가 DAO를 사용할 때의 목적이 분명해졌다. 비즈니스 로직과 데이터베이스 관련 로직을 잘 분리하자!

마치며

DAO에 대해 공부하며 알게 된 것은 DAO의 사용 목적이 뚜렷하다는 것이다.

바로 비즈니스 로직과 데이터베이스 관련 로직의 분리.

프로젝트를 할 때 생각보다 잘 된 부분인 것 같지만 회상해보면 서비스 컴포넌트에서 LIKE 검색을 사용하기 위해 “%” 문자열을 사용할 뻔한 기억이 있다.

앞으로는 이러한 부분도 유의해서 개발해야겠다.

0개의 댓글