Spring MVC and iBatis Example - jPetStore 분석 (1)

Spring MVC와 iBatis를 이해하기 위해 jPetStore를 분석해본다. 그 첫번째 시간

jPetStore 분석하기

jpetstore는 Spring FrameworkiBatis를 연결하여 사용하는 Spring의 예제이다. jpetstore는 Spring Framework 2 를 다운로드 받고 압축을 풀면 sample 폴더에서 찾을 수 있다. Spring Framework 3에는 petclinic이라는 Sample만 있으며, Persistance Layer로는 JPA, JDBC, Hibernate를 사용한다. Spring 3의 petclinic 분석은 차후에 하도록 한다.

image

들어가기에 앞서 다음 프로그램들이 설치되어 있어야 한다.

jpetstore 어플리케이션을 크게 두 부분으로 나누어 볼 수 있으며, 서로 다른 컴포넌트로 교체 가능하다.

  • SpringMVC (web application layer) - 웹 요청을 받아들이고, 처리해서, 결과물을 사용자에게 보여준다.
  • iBatis (Persistance layer) - web application layer에서 database의 데이터를 사용할 때 쉽게 쓸 수 있도록 도와준다.

내부 설정과 코드를 살펴보기 전에, 실행부터 해보자. jpetstore 디렉토리로 이동하여 ‘ant warfile’을 하면 warfile이 생성된다. (Ant가 설치되어 있어야 한다) 생성된 war파일을 Container에 Load해본다. 예를 들어 Apache Tomcat의 경우, webapps 폴더에 복사하고, http://localhost:8080/jpetstore/ 주소로 접속하여 jpetstore의 페이지가 뜨는 것을 확인한다.

SeanMacBook:~/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore$ ls -al
total 48
drwxr-xr-x  12 Yee  staff   408 Sep 20 12:52 ./
drwxr-xr-x   7 Yee  staff   238 Sep 20 12:54 ../
drwxr-xr-x   8 Yee  staff   272 Sep 20 12:52 annotation/
drwxr-xr-x   7 Yee  staff   238 Sep 20 12:52 attributes/
-rw-r--r--   1 Yee  staff   138 Jun 14  2007 build.bat
-rw-r--r--   1 Yee  staff  5241 Feb  7  2008 build.xml
drwxr-xr-x   6 Yee  staff   204 Sep 20 12:52 client/
drwxr-xr-x   6 Yee  staff   204 Sep 20 12:52 db/
-rw-r--r--   1 Yee  staff  5368 Jun 14  2007 readme.txt
drwxr-xr-x   3 Yee  staff   102 Sep 20 12:52 src/
drwxr-xr-x   6 Yee  staff   204 Sep 20 12:52 war/
-rw-r--r--   1 Yee  staff    19 Jun 14  2007 warfile.bat
SeanMacBook:~/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore$ ant warfile
Buildfile: build.xml

build:
    [mkdir] Created dir: /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/.classes
    [javac] Compiling 72 source files to /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/.classes
    [javac] Note: /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/src/org/springframework/samples/jpetstore/web/struts/BaseActionForm.java uses or overrides a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
     [copy] Copying 7 files to /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/.classes
    [mkdir] Created dir: /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/war/WEB-INF/lib
      [jar] Building jar: /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/war/WEB-INF/lib/jpetstore.jar
     [copy] Copying 21 files to /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/war/WEB-INF/lib
     [copy] Copying 1 file to /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/client

warfile:
    [mkdir] Created dir: /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/dist
      [war] Building war: /Users/Yee/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore/dist/jpetstore.war

BUILD SUCCESSFUL
Total time: 3 seconds
SeanMacBook:~/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore$ ls dist/
jpetstore.war
SeanMacBook:~/Documents/Workspace/spring-framework/spring-framework-2.5.5/samples/jpetstore$

image