DAO는 Data Access Object의 약자로
레포지토리라는 패키지를 사용하여 실제로 DB에 접근하는 객체입니다.
DB에 접근하여 데이터를 조회, 조작하는 기능을 전담하는 것입니다.
데이터베이스 액세스를 DAO 에서 맡아서 하게 되면 효율적으로 서버를 관리할 수 있습니다. 프로그램 내에서 발생하는 데이터 베이스 연산을 한번에
커넥트 시켜놓고 관리할 수 있으므로 커넥션 비용을 줄일 수 있기 때문입니다.
DTO란 Data Transfer Object의 약자로
레이어들 사이에서 주고받는 데이터 객체의 포멧을 만들어두는 것입니다.
DAO 에서 넘겨준 key-value형태로 되어있는
날데이터?를 getter을 통해 가져오고 이를 보기쉬운 형태로 변환해준 뒤
@Controller(웹요청,응답을 처리하는 프레젠테이션 레이어), @Service(내부에서 자바로직 수행하는 서비스레이어), @Repository(DAO같이 외부 IO를 처리하는 퍼시스턴스 레이어)와 같은 타 레이어에 데이터를 보내주는 것입니다.
VO와 DTO는 보통 동의어로 사용되지만 엄밀히 따지면 다른 것들인데,
VO는 특정한 비즈니스값을 갖는 객체 + Read only 라면
DTO는 layer간의 데이터교환을 위해 만드는 객체 + Read,Write가 가능하다는 점에서 차이점을 가집니다.
https://cnwlcjf.tistory.com/12
https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html
https://postitforhooney.tistory.com/entry/Spring-MVC-%ED%8C%A8%ED%84%B4%EC%97%90%EC%84%9C%EC%9D%98-5%EA%B0%80%EC%A7%80-%EA%B3%84%EC%B8%B5%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EB%B3%B4-%ED%8D%BC%EC%98%B4