DataBase

DAO(Databse Access Object)

traveler_JH 2023. 2. 23. 11:09

DAO는 데이터 베이스나 외부 파일 시스템과 같은 영속성 메커니즘에 접근하여 데이터의 CRUD 처리를 담당하는객체 혹은 그러한 패턴을 의미

= DB에 접속하여 데이터를 조회/수정을 하는 기능을 전담하도록 만든 객체

여러 저장소(MySQL, Postgre SQL, Mongo DB)가 존재하며 이를 사용하기 위해 각 벤더별로 제공하는 API가 존재

해당 API를 직접사용하게 되면 특정 영구 저장소 API에 코드가 종속되는 결과가 발생한다.

예를 들어, Business Layer에서 직접 특정 벤더의 API를 사용한 경우, Business Layer와 Database Layer(Infrastructure Layer)가 강하게 결합되고, Database Layer의 변화가 Business Layer까지 영향을 끼칠 수 있다. 또한 만약 MySQL에서 PostgreSQL로 마이그레이션을 해야할 일이 생긴다면, MySQL의 API를 사용한 코드를 모두 PostgreSQL의 API를 사용한 코드로 변경해야하는 등의 문제도 발생할 수 있을 것 이다.

DAO는 이러한 문제를 해결하기위해 등장한 패턴이다.

DAO는 고수준인 Business Logic과 저수준인 Persistence Logic을 분리하기 위해, Persistence Logic을 캡슐화 하고 도메인 레이어에 객체지향적인 인터페이스를 제공하는 객체이다.

DAO를 사용하여 영속성 메커니즘에 대한 CRUD 로직을 캡슐화하게 되면, Business Layer는 데이터에 접근하는 방식을 알고있지 않게된다. 따라서 SRP, 관심사의 분리를 만족하는 코드를 작성할 수 있게 된다. 결과적으로 Business Layer 는 비즈니스 로직에만, DAO는 CRUD 로직에만 집중할수있게 된다.

또한 DAO는 비즈니스 로직과 영구저장소 벤더의 API사이의 어댑터 역할을 한다.

'DataBase' 카테고리의 다른 글

SQL  (0) 2022.07.07
RDB : Relational database  (0) 2022.07.07
데이터베이스(DataBase)  (0) 2022.07.07