웹(Web)/백엔드(Backend)

스프링MVC패턴 Controller / Model(DAO,DTO,Service) / View

SK_MOUSE 2022. 2. 13. 15:31
반응형

구성도

단, DTO(=VO)로 혼용해서 많이 사용한다.

상세 비교 : 2022.02.13 - [웹(Web)/백엔드(Backend)] - DTO vs VO 비교 (+Entity) 

 

코드 동작은 아래와 같다.

User->컨트롤러->서비스+서비스Impl(<->DAO)->뷰

요약방식으로 적겠다. 상세 내용은 따로 검색해보면서 공부하는 것이 맞는듯하다.

1. Controller(컨트롤러) : 클라이언트 요청 받아서 객체지향방식으로 가공해서 Service에 던져줌

2. Service(서비스) : 적절한 Service에 전달받음

Service : DAO를 묶어 합친 것

-> DAO(Data Access Object)로 DB에 접근

DAO => @Repository
DAO는 DB를 사용해 데이터 조회/조작하는 기능 역할을 하는 객체
DAO 사용 이유 : 커넥션 관리 및 보안성

Q1. interface를 정의하고 구현한 클래스에서 @Repository를 붙이는 이유?

확장성과 유연성이 높아지기 때문.

Q2. 이런식으로 분리하는 이유?
HTTP 요청을 Web App이 받게 되면, 쓰레드를 생성하게 됨
-> 비즈니스 로직이 DB로부터 데이터 얻어오려고 Driver,Connection생성하면 연결 多 발생함!@-@
-> 따라서 DAO 하나만을 만들어 DB 전용 객체로 사용!-!  

-> DTO(VO)로 데이터 전달받음

객체의 속성과 getter, setter만 가지고 있음.
계층관 데이터 교환을 위한 Java Beans이다.

DTO는 DB에서 데이터를 얻어 Service/Controller 등으로 보낼 때 사용하는 객체.

-> View에게 반환 혹은 값만 반환

 

 

반응형