본문 바로가기
Spring Spring boot

[Spring boot] Controller/service/dao/dto

by cooky2 2021. 10. 7.

프로젝트 패키지 구조를 보면서 하나씩 정리 (: 


 

1. controller

  • 클라이언트에서 요청이 들어올 때, 해당 요청을 수행할 비즈니스 로직을 제어하는 객체
  • @Controller : controller의 역할을 수행한다고 명시해주는 어노테이션으로 정의
  • @RequestMapping(value=" ", method=) : controller에 들어온 요청을 처리하는 기준점 서버의 URL + value로 매핑되며 method의 RequestMethod.GET or POST 주소창에 URL + value를 입력하면 method가 수행됨
  • ex ) 세션, 페이지 요청 처리

 

2. dao

  • db에 접근하는 객체, 효율적인 커넥션 관리와 보안성 때문에 사용
  • @Repository 어노테이션으로 정의
  • ex) DB 요청, 결과 리턴

*분리해서 관리하는 이유는 HTTP Request를 Web Application이 받게 되면, 스레드(thread)를 생성하게 되는데, 비즈니스 로직이 DB로부터 데이터를 얻어오기 위해 매번 Driver을 로드하고 Connection 객체를 생성하게 되면, 엄청 많은 connection이 일어나므로 DAO를 하나 만들어 DB전용 객체로만 씀.

*thread : 프로세스 내에서 실제로 작업을 수행하는 주체

 

 

3. dto

  • Database에서 Data를 얻어 Service나 Controller등으로 보낼 때 사용하는 객체, 한마디로 client가 요청할 양식과 요청을 처리하는 과정에서 기준이 되는 틀을 정의
  • 보통 로직을 가지고 있지 않으며, data와 그 data에 접근을 위한 getter, setter만 가지고 있음
  • ex) 각 도메인 객체에 맵핑되는 클래스 

 

4. service

  • controller가 request를 받으면 적절한 service에 전달하고 전달 받은 service는 사용자의 요청에 대해 어떤 처리를 할지 결정하는 파트
  • @service의 역할을 수행 한다 명시해주는 어노테이션
  • ex) 비즈니스 로직 수행 

댓글