- 5편 : Controller, Service, DAO
지난주에 이어
3편에 index.jsp에서 /sample/egovSampleList.do 요청을 하였습니다.
그리고 .do 요청은 web.xml에서 dispatcher-servlet이 처리하도록 설정하였습니다.
그리고 스프링MVC 처리과정을 보았습니다.
HandlerMapping이 요청 URL에 해당하는 컨트롤러를 알려줍니다.
1. 웹브라우저에서 발생한 /sample/egovSampleList.do이 DispatcherSevlet에 전달됩니다.
2~3. HandlerMapping에게 /sample/egovSampleList.do 에 해당하는 컨트롤러를 요청하고
DefaultAnnotationHandlerMapping은 @RequestMapping어노테이션을 이용하여 컨트롤러를 알려줍니다.
자세한 내용은 이전 포스팅을 참고하세요!
http://blog.naver.com/bboy12/10188480056
이제 컨트롤러가 ModelAndView를 리턴하는 과정을 살펴보겠습니다.
EgovSampleController 살펴보기
위에 MVC 처리과정은 모두 전자정부프레임워크에 설정되어있습니다. 개발자가 실제로 코딩하는 부분은 바로 컨트롤러부터 입니다.
sampleProject/src/main/java/egovframework/example/sample/web 폴더에 EgovSampleController.java를 오픈합니다.
코드를 살펴보겠습니다.
@RequestMapping(value="/sample/egovSampleList.do") |
상단에 RequestMapping 어노테이션이 있습니다. 앞에서 살펴본 것처럼 @RequestMapping은 컨트롤러가 처리할 요청 URL을 명시하는데 사용됩니다.
@RequestMapping(value="/sample/egovSampleList.do") |
메소드내의 코드를 보면 가장 먼저 페이징 처리를 위한 작업을 합니다. (이부분은 다음 포스팅에서 살펴보겠습니다.)
/** EgovPropertyService.sample */ |
sampleService.selectSampleList() 를 호출하여 처리를 요청합니다. 파라미터로는 searchVO를 넘겨줍니다.
VO에 대한 자세한 설명은 다음 포스팅에서 하도록 하겠습니다.
List sampleList = sampleService.selectSampleList(searchVO); |
Controller - Service - Dao 구조는 많이 보셨을 겁니다.
Controller는 요청을 받고 처리된 결과를 ModelAndView로 넘겨주는 역할을 합니다.
프로젝트를 다니다보면 불필요한 업무로직까지 Controller에 작성되어 있는 경우가 많습니다.
업무로직은 반드시 Service에 정의해야 합니다.
EgovSampleService 살펴보기
sampleProject/src/main/java/egovframework/example/sample/service 경로에 EgovSampleService.java를 열어봅시다.
service는 다음과 같이 인터페이스로 작성되어있습니다.
public interface EgovSampleService { ... |
service에 대한 구현은
sampleProject/src/main/java/egovframework/example/sample/service/impl 경로의 EgovSampleServiceImpl.java에 작성합니다.
@Service("sampleService") /** |
ServiceImpl에서는 sampleDAO.selectSampleList()를 호출합니다. 단순 조회이기 때문에 별다른 업무로직이 없이 DAO를 호출합니다.
public List selectSampleList(SampleDefaultVO searchVO) throws Exception { |
sampleDAO를 살펴보도록 하죠.
sampleDAO를 클릭하여 커서를 위치하고 F3을 누릅니다.
public List selectSampleList(SampleDefaultVO searchVO) throws Exception { |
상단에 DAO선언부로 이동합니다. 마찬가지로 앞에 SampleDAO를 클릭하여 커서를 위치하고 F3을 누르면 SampleDAO.java파일이 자동으로 오픈됩니다.
@Resource(name="sampleDAO") |
SampleDAO 살펴보기
DAO는 Data Access Object의 약자로 데이터베이스에 접근하기 위한 역할을 수행합니다.
SampleDAO는 EgovAbstractDAO를 상속받았습니다. EgovAbstractDAO는 CRUD와 관련한 대표적인 method를 간단하게 호출할 수 있도록 제공합니다.
@Repository("sampleDAO") } |
list메소드를 호출합니다. 파라미터로 SQL mapping을 위한 쿼리ID와 검색조건을 세팅할 파라미터 객체를 전달하여 쿼리ID에 해당하는 쿼리를 실행하여 처리된 결과를 리턴합니다.
EgovSample_Sample_SQL.xml 살펴보기
sampleProject/src/main/resources/egovframework/sqlmap/example/sample 경로의 EgovSample_Sample_SQL.xml파일을 오픈합니다.
ctrl+F(찾기)를 누른뒤 "sampleDAO.selectSampleList_D"를 검색합니다.
<select id="sampleDAO.selectSampleList_D" parameterClass="searchVO" resultClass="egovMap"> SELECT ID, NAME, DESCRIPTION, USE_YN, REG_USER |
<isEqual>은 iBatis문법으로 searchCondition값이 0인 경우 아래 쿼리가 수행됩니다. 처음에는 파라미터로 넘어온 값이 없으므로 다음 쿼리만 실행이 되겠습니다.
SELECT ID, NAME, DESCRIPTION, USE_YN, REG_USER |
마무리
이번 포스팅에서는 컨트롤러에서 서비스, DAO를 거쳐 쿼리가 실행되는 과정을 보았습니다. 실행된 쿼리로부터 결과값을 넘겨받아 뷰로 전달되는 과정을 다음 포스팅에 살펴보도록 하겠습니다.
'전자정부프레임워크 > API' 카테고리의 다른 글
유니크값 생성해주는 IDGenerationService (0) | 2014.08.04 |
---|---|
[전자정부프레임워크#6] 컨트롤러에서 뷰까지 (0) | 2014.05.22 |
[전자정부프레임워크#4] 스프링 MVC 처리과정 (1) | 2014.05.22 |
[전자정부프레임워크#3] 서버에 페이지 요청하기 (0) | 2014.05.22 |
[전자정부프레임워크#2] 뚝딱 게시판 만들기 (0) | 2014.05.22 |
[전자정부프레임워크#1] 프레임워크 설치하기 (1) | 2014.05.22 |
egovMap에 담긴 파라메타 사용법 (0) | 2014.05.22 |
전자정부프레임워크 EgovAbstractDAO (0) | 2014.02.19 |