DAO와 Repository / DTO / VO

Yuri Lee·2020년 9월 14일
1

DAO

  • Data Access Object
  • DAM(Data Access Module)과 유사한 역할
  • DB접근 로직과 비즈니스 로직을 구분하기 위함
  • DB의 데이터에 접근하는 객체
  • DAO를 사용하게 되면 DB의 접근을 DAO가 담당하게 되기 때문에 그 부분에 대해 신경을 덜 써도 된됨.
  • 일반적으로 DAO는 단일 데이터의 접근 및 갱신 개념이고 서비스는 하나 이상의 DAO를 이용(조합)하여 비지니스 로직을 처리함. 이게 트랜잭션 단위라고 생각하면 됨
  • 일반적으로 Controller - Service - ServiceImpl - DAO 구조
  • 물론 Controller - Service - DAO, 혹은 Controller - DAO 로도 가능
  • Controller가 업무 단위라고 보고, Service는 트랜잭션 단위, DAO는 DB SQL 단위

Repository

  • JPA와 같은 ORM을 사용하게 되면 객체 단위로 테이블을 관리 (Entity)
  • 이 때 Repository는 DAO의 역할을 대신한다.
  • 비슷한 역할이지만 차이는 분명 있다. 아래 링크를 보고 더 공부해야 할 듯...

http://egloos.zum.com/aeternum/v/1160846

https://www.slipp.net/questions/319

DTO

  • Data Transfer Object
  • 각 계층간 데이터 교환을 위한 객체
  • 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만 보유한 클래스

VO

  • DTO와 동일한 역할
  • 차이점: read only

DAO는 Data Access Object의 줄임말로, DB를 사용해 직접적으로 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다. DB에 대한 접근을 DAO가 담당하도록 하여 데이터베이스 엑세스를 DAO에서만 하게 되면 다수의 원격호출을 통한 오버헤드를 VO나 DTO를 통해 줄일 수 있고 다수의 DB 호출문제를 해결할 수 있다. 또한 단순히 읽기만 하는 연산이므로 트랜잭션 간의 오버헤드를 감소할 수 있다.

DTO는 Data Transfer Object의 줄임말로, DB에 직접적으로 접근되지 않는 오브젝트이다. 일반적인 DTO는 로직을 갖고 있지 않는 순수한 데이터 객체이며 속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스를 말한다.

VO(Value Object)는 DTO에서 read only 속성을 가진 Object를 말한다. 다시 말해 수정이 불가능하다.

references
https://kkambi.tistory.com/30
https://sarc.io/index.php/forum/question-and-answer/1446-dao

https://blog.naver.com/sjc02183/221780443142

profile
Step by step goes a long way ✨

0개의 댓글