DAO와 Service

DAO와 Service 정의

DAO

  • Service에 의해 호출되어 DB CRUD를 담당

Service

  • Controller에 의해 호출되어 실제 비즈니스 로깆과 트랜잭션을 처리
  • DAO를 호출하여 DB CRUD를 처리한 후 Controller로 반환

DAO와 Service 차이

DAO는 단일 데이터 접근/갱신만 처리한다.

 

Service는 여러 DAO를 호출하여 여러번의 데이터 접근/갱신을 하며 그렇게 읽은 데이터에 대한 비즈니스 로직을 수행하고, 그것을 하나의(혹은 여러개의) 트랜잭션으로 묶어준다. 즉, Service가 트랜잭션 단위이다.

 

단순하게 페이지를 불러오고 DB 정보를 한번에 불러오는 간단한 프로젝트의 경우 DAO와 Service는 차이가 거의 없거나 동일해지는 경우가 발생하기도 한다. 하지만 그것은 해당 비즈니스 로직이 "단일 DB 접근"으로 끝나기 때문에 발생하는 것이다.

 

만약 DAO의 메소드 하나에 다중 DB접근 로직이 들어갔고, 서비스는 단순히 그 DAO메소드를 호출하는 통로 역할만 한다면 DAO측 모듈화가 제대로 안된 접근 방식일 가능성이 높다.