Anyframe Java

 

 

Template Guide

 

 

 

 

 

 

Anyframe Java

Ver. 3.2.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Preface

문서는 Anyframe Template 대한 내용을 담고 있으며, 작성자나 검증자의 실수로 인해 오류가 있을 수도 있음에 양해를 구합니다. 문서에 심각한 오류가 있다고 판단될 경우 Anyframe 포럼에 등록해 주시면 담당자가 적절한 조치를 취할 있도록 것입니다. 문서는 개인적인 용도로 사용될 있으며, 다른 사람에게 배포되어야 하는 경우 반드시 이와 같은 Copyright Notice 포함하도록 합니다. 내용에 대한 자유로운 추가 수정 작업은 허용하나, 문서의 상업적인 사용은 허용하지 않습니다. 상업적 사용시 반드시 Anyframe Portal Site 통해 요청하셔야 함에 유의하시기 바랍니다.

 

 

Copyright 2008, www.anyframejava.org - Site maintained by SAMSUNG SDS

 

 

제 1 장    개 요    5

1.1 목 적    5

1.2 유의사항    5

제 2 장    설치하기    6

2.1 설치 환경    6

2.2 Template 설치    6

2.2.1 Basic Template설치    6

2.2.2 MiPlatform Template설치    7

2.3. Template실행    9

제 3 장    Basic Template 소개    11

3.1. 개 요    11

3.2. 구 현    11

3.2.1. 비즈니스 레이어    11

3.2.2. 프리젠테이션 레이어    13

제 4 장    MiPlatform Template 소개    15

4.1. 개요    15

4.2. 구 현    15

4.2.1. 비즈니스 레이어    15

4.2.2. 프리젠테이션 레이어    17

제 5 장    Base Framework    19

5.1. Spring IoC    19

5.2. Spring AOP    20

5.3. Hibernate    23

5.4. Query 서비스    26

5.5. MiPQueryService    28

5.6. Spring MVC    30

5.7. MiPlatform    34

5.8. 기타    36

별첨-1. 주요 클래스 다이어그램 Category @Basic Template    38

별첨-2. 주요 클래스 다이어그램 Category @MiPlatform Template    39

제 1 장    개 요

1.1 목 적

Anyframe Java에 대한 대표적인 적용 방안을 제시함으로써 Anyframe Java를 기반으로 어플리케이션을 개발하는 프로젝트에 효과적인 개발구조 가이드를 제시하고 개발 초기에 해당 프로젝트에서 개발 템플릿을 정의하는데 소요되는 시간을 줄이고자 구현 기준 샘플 프로젝트를 Template으로 제공하고, 설치에서부터 구현 기능 및 활용 서비스에 대한 설명을 하고자 한다.

Anyframe Java 3.2.0 (jdk 1.4)은 다음과 같이 기본 템플릿과 MiPlatform 템플릿 두 가지로 제공된다. 또한 기본 템플릿은 웹 어플리케이션에 따라 두 가지로 나뉜다.

 

  • 기본 템플릿
    • 서비스 어플리케이션 : Spring 기반, QueryService, Hibernate를 이용한 DB Access Layer
    • 웹 어플리케이션
      • SpringMVC 기반, JSP를 이용하여 구현
      • Struts 기반, JSP를 이용하여 구현
  • MiPlatform 템플릿
    • 서비스 어플리케이션 : Spring 기반, MiPQueryService를 이용한 DB Access Layer
    • 웹 어플리케이션 : SpringMVC 기반, MiPlatform을 이용하여 구현

 

1.2 유의사항

문서에서 사용된 코드와 아키텍처 스타일은 다양한 프레임워크 기능의 사용예와 아키텍처의 유연성을 고려한 샘플이며 성능에 최적화되어 제공하는 것은 아니므로 실제로 프레임워크를 적용하여 프로젝트 수행 디자인 코드와 성능에 대한 여러 요구 사항들(주로 비기능적인 요구조건) 적절히 고려하여 어플리케이션을 구축하여야 한다

 

제 2 장    설치하기

2.1 설치 환경

JDK: JDK 1.4.2 이상

Web Container: Tomcat 5.0.28 이상, WebLogic 8.1.6 이상

DataBase: HSQL DB 1.8.0.4 이상, Oracle 8i 이상

IDE : Eclipse 3.3 이상(프레임워크에서 제공하는 플러그인이 포함된 Eclipse 권장)

Anyframe : Anyframe Core / Web 3.2.0 이상

Anyframe 설치는 Anyframe Portal Site의 설치문서 참고

※ MiPlatform의 경우 MiPlatform 클라이언트 프로그램이 설치되어야 한다. MiPlatform은 상용프로그램이므로 사용자가 S/W를 구입하여 설치하였다고 가정한다.

2.2 Template 설치

2.2.1 Basic Template설치

  • 압축파일 해제
    - 적당한 폴더를 선택하여 템플릿 압축 해제 실시
    à [템플릿 압축해제 폴더]
  • Eclipse 실행
  • 프로젝트 Import
  1. Eclipse 메뉴의 File – Import 선택
  2. Existing Projects into Workspace 선택 후 Next 버튼 클릭
  3. Select root directory의 Browse버튼 클릭 하고 [템플릿 압축해제 폴더] 선택
  4. 하단 Projects 리스트에서 "anyframe-template-service", "anyframe-template-web-struts", "anyframe-template-web-springmvc"를 선택하고 Finish 버튼 클릭
  • 라이브러리 설정
  1. Anyframe Core와 Web 설치 폴더의 모든 jar 파일을 [템플릿 압축해제 폴더]/anyframe-template-web-struts/src/webapp/WEB_INF/lib와 [템플릿 압축해제 폴더]/anyframe-template-web-springmvc/src/webapp/WEB_INF/lib로 복사
  2. Eclipse 메뉴의 Window – Preferences선택
  3. 좌측의 트리 메뉴에서 Java – Build Path – User Libraries 선택
  4. New 버튼 클릭하고 User Library Name에 'TEMPLATE_LIB' 입력
  5. 우측의 Add JARs 버튼을 클릭하여 Anyframe Core와 Web 설치 폴더의 모든 jar 파일을 선택
  • Web Container 설정
  1. Eclipse 메뉴의 Window – Preferences선택
  2. 좌측의 트리 메뉴에서 Server – Installed Runtimes 선택
  3. Add 버튼 클릭하고 Apache Tomcat 5.0 선택하고 Next 버튼 클릭
  4. Browse 버튼을 클릭하여 설치된 Tomcat Root 폴더를 선택

    ※ Eclipse의 default JRE 버전이 JDK 1.4일 경우 Tomcat 5.0을,

JDK 1.5일 경우 Tomcat 5.5 버전을 사용한다.

 

  • 사용자 환경에 맞추어 서비스 배포
  1. Eclipse에서 anyframe-template-service프로젝트의 build.xml파일을 열어서 anyframe.lib의 위치를 Anyframe Core와 Web 설치 폴더로 변경
    (artifacts.dir 변수는 오픈 소스 자바 코드 코드커버리지 툴킷인 emma를 사용하기 위한 변수로, emma를 통해 생성되는 리포트 파일이 만들어질 위치이다.)
  2. Eclipse의 Package Explorer에서 build.xml을 선택하고 마우스 오른쪽 버튼을 클릭하여 Run As – Ant Build를 선택하고 all target을 선택하여 Run 버튼 클릭

※ 템플릿을 구성하는 서비스 코드 및 속성 정의가 변경 됐을 경우 all target을 실행시키면 자신의 환경에 수정 내용을 배포할 수 있다.

※ Junit 테스트와 emma를 통한 리포팅을 모두 적용하려면 test target을 실행시키면 된다.

2.2.2 MiPlatform Template설치

  1. 압축파일 해제
    - 적당한 폴더를 선택하여 템플릿 압축 해제 실시
    à [템플릿 압축해제 폴더]
  2. Eclipse 실행
  3. 프로젝트 Import
    1. Eclipse 메뉴의 File – Import 선택
    2. Existing Projects into Workspace 선택 후 Next 버튼 클릭
    3. Select root directory의 Browse버튼 클릭 하고 [템플릿 압축해제 폴더] 선택
    4. 하단 Projects 리스트에서 "anyframe-template-mi-service","anyframe-template-mi-web"를 선택하고 Finish 버튼 클릭

     

  4. 라이브러리 설정
    1. Anyframe Core와 Web 설치 폴더의 모든 jar 파일을 [템플릿 압축해제 폴더]/anyframe-template-mi-web/src/webapp/WEB_INF/lib로 복사
    2. Eclipse 메뉴의 Window – Preferences선택
    3. 좌측의 트리 메뉴에서 Java – Build Path – User Libraries 선택
    4. New 버튼 클릭하고 User Library Name에 'TEMPLATE_LIB' 입력
    5. 우측의 Add JARs 버튼을 클릭하여 Anyframe Core와 Web 설치 폴더의 모든 jar 파일을 선택
      ※ MiPlatform을 사용할 경우 MiPlatform의 library가 필요하다. MiPlatform은 상용소프트웨어이므로 구매하여 추가하기 바란다.

 

  1. Web Container 설정
    1. Eclipse 메뉴의 Window – Preferences선택
    2. 좌측의 트리 메뉴에서 Server – Installed Runtimes 선택
    3. Add 버튼 클릭하고 Apache Tomcat 5.0 선택하고 Next 버튼 클릭
    4. Browse 버튼을 클릭하여 설치된 Tomcat Root 폴더를 선택

    ※ Eclipse의 default JRE 버전이 JDK 1.4일 경우 Tomcat 5.0을,

JDK 1.5일 경우 Tomcat 5.5 버전을 사용한다.

 

  1. 사용자 환경에 맞추어 서비스 배포
    1. Eclipse에서 anyframe-template-mi-service프로젝트의 build.xml파일을 열어서 anyframe.lib의 위치를 Anyframe Core와 Web 설치 폴더로 변경
    2. Eclipse의 Package Explorer에서 build.xml을 선택하고 마우스 오른쪽 버튼을 클릭하여 Run As – Ant Build를 선택하고 all target을 선택하여 Run 버튼 클릭

    ※ 템플릿을 구성하는 서비스 코드 및 속성 정의가 변경 됐을 경우 all target을 실행시키면 자신의 환경에 수정 내용을 배포할 수 있다.

2.3. Template실행

  1. 테이블 및 데이터 생성
  • Hsql DB의 경우,
    • [템플릿 압축해제 폴더]/anyframe-template-service/DATABASE/db 폴더 (MiPlatform Template의 경우 [템플릿 압축해제 폴더]/anyframe-template-mi-service/DATABASE/db 폴더)의 insertvalue.sql의 내용을 sampledb.script의 기존 내용(DDL)에 이어 붙여 넣은 후 runHsqlDB.cmd 파일 실행
  • Oracle DB의 경우,
    • [템플릿 압축해제 폴더]/anyframe-template-service/DATABASE/db 폴더의 templateDB.sql을 이용하여 테이블 및 데이터 생성

    

※ 사용하는 DBMS의 종류에 따라 Data Source 설정을 바꿔야 한다.

anyframe-template-service/src/main/resources/spring/common/context-

datasource.xml 파일에 있는 dataSource의 속성을 사용자의 환경에 맞게

수정한 후 build.xml을 선택하고 마우스 오른쪽 버튼을 클릭하여

Run As – Ant Build 를 실행해 다시 배포한다.

 

  1. Web Container 구동
    1. Eclipse의 Package Explorer에서 anyframe-template-web-springmvc 또는 anyframe-template-web-struts 프로젝트 선택
      MiPlatform Template의 경우 anyframe-template-mi-web 프로젝트 선택.
    2. src/webapp/login.jsp를 선택하고 마우스 오른쪽 버튼을 클릭하여 Run AS – Run on Server 을 선택하여 실행. 또는 Internet Explorer에서 anyframe-template-web-springmvc 또는 anyframe-template-web-struts 프로젝트의 주소를 입력하여 로그인 화면이 나타나는 것을 확인.
      MiPlatform Template의 경우 anyframe-template-mi-web 프로젝트 주소.
      예)
      http://localhost:8080/anyframe-template-web-springmvc
      http://localhost:8080/anyframe-template-mi-web
  2. 실행 결과

① 로그인 할 수 있는 화면

② ID, Password에 'test/test123'을 입력하고 Login 버튼 클릭 시 Welcome

페이지로 이동

③ 좌측 메뉴를 클릭하여 이용

제 3 장    Basic Template 소개

3.1. 개 요

Anyframe Template은 기본적으로 Eclipse의 프로젝트 형태로 제공된다. Anyframe Basic Template은 비즈니스 레이어를 구현한 Service(anyframe-template-service)프로젝트와 프리젠테이션 레이어를 구현한 Web(anyframe-template-web-springmvc와 anyframe-template-web-struts)프로젝트로 구성되어 있다.

Service프로젝트는 Anyframe Core 3.2.0의 Spring IoC, Spring AOP, Hibernate, Query 서비스를 이용하여 구현하였고, Web프로젝트는 Spring MVC를 기반으로 구현한 것과 Struts기반으로 구현한 것, 이렇게 두 가지로 구성되어 있다.

Template에서 구현한 서비스는 제품(Product)의 등록, 수정, 삭제, 조회 및 분류체계(Category)의 등록, 수정, 삭제, 조회 기능으로 일반적으로 많이 사용되는 기능을 중심으로 하되 확대가 용이한 구조로 구현하였다.

3.2. 구 현

3.2.1. 비즈니스 레이어

비즈니스 서비스는 아래 그림과 같이 도메인 모델, 서비스 인터페이스 클래스, 서비스 구현클래스, DAO 인터페이스 클래스 및 DAO 구현 클래스로 구성되어 있다

1) 제품(Product) 관련 클래스

종류

클래스

클래스 설명

도메인 모델

Product 

Product 테이블 컬럼과 동일한 멤버변수와 그에 대한 Setter/Getter 메소드로 구성

서비스 인터페이스

ProductService 

Product 관리 기능을 제공하기 위한 인터페이스로 Create/Find/Update/Remove 기본 CRUD 메소드에 카테고리별 제품 수량 정보 추출을 위한 countProductListByCategory 카테고리별 제품 리스트 제공을 위한 findProductList 메소드로 구성

서비스 구현

ProductServiceImpl

ProductService implements 하는 클래스로 ProductDAO 메소드를 호출하여 DB처리를 하도록 하고, IIdGenerationService 이용하여 Product 정보를 생성하고, MessageSource 이용하여 오류메세지를 처리하는 기능 구현

Spring IoC 활용

DAO 인터페이스

ProductDAO 

Product관련 DB 조작하기 위한 메소드를 정의한 인터페이스

DAO 구현

ProductDAOHibernateImpl 

ProductDAO implements 하는 클래스로 HibernateDaoSupport 상속받아서 DB 조작하고 propertiesService 이용하여 findProductList 메소드내에서 Page관련 정보를 처리함

Hibernate 활용, Spring IoC 활용

ProductDAOQueryImpl

ProductDAO implements 하는 클래스로 AbstractDAO 상속받아서 DB 조작하고 propertiesService 이용하여 findProductList내에서 Page관련 정보를 처리함

Query서비스 활용, Spring IoC 활용

※ Category 관련 클래스와 Code 관련 클래스도 동일하게 구성.

 

2) 공통(Common) 클래스

종류

클래스

클래스 설명

Data Transfer Object

SearchVO

검색 기능과 관련된 정보를 가진 클래스로 멤버변수의 Setter/Getter 메소드로 구성

서비스구현

EmpException

BaseException 상속받은 클래스. 여러가지 입력 파라미터를 받는 생성자로 구성

EmpUtil 

Null 처리를 위한 메소드 여러가지 String utility 메소드를 담고 있음

ExceptionTransfer

Exception 발생되었을 Spring AOP 의해 transfer 메소드가 호출된다. Exception 별로 정의된 메시지를 MessageSource 이용하여 처리를 하도록

Spring AOP, Spring IoC 활용

LoggingAspect 

클래스의 메소드가 호출 되었을 Spring AOP 의해 beforeLogging 메소드가 실행된다. 호출된 클래스와 메소드명 그리고 호출 시점에 입력된 parameter 값까지 추출하여 Logging하는 클래스임

Spring AOP, Spring IoC 활용

※ 이외, 클래스들은 Security 관련 클래스로 서비스 인터페이스 클래스인 AuthenticationService와 그 구현클래스인 DBAuthenticationService, java.util.Properties를 상속받은 Credential 클래스로 구성되어 있다.

 

3.2.2. 프리젠테이션 레이어

Anyframe Basic Template에서 제공하는 프리젠테이션 레이어 어플리케이션은 Spring MVC 기반으로 구현된 것과 Struts를 기반으로 구현된 것, 두 가지가 있다. 이 중 Spring MVC 기반으로 구현된 Template에 대해서 설명하도록 한다. Spring MVC 기반의 프리젠테이션 레이어는 아래 그림 같이 DispatcherServlet, Interceptor, Controller, JSP, Custom Tag Library로 구성되어 있다.

 

 

 

 

 

 

 

 

 

 

 

[프리젠테이션 레이어 구성]

 

1) 제품(Product) 관련 구성요소

종류

구성요소

Controller 

ProductController.java

Product 도메인에 관련된 기본 CRUD 기능을 호출하는 각각의 addView(), add(), get(), update(), list(), delete() 메소드로 구성되며 double submit 방지 기능이 적용되어 있지 않다.

JSP 

addProduct.jsp

제품 등록을 위한 화면으로 ProductController add()메소드를 호출하여 제품등록처리를 한다

listProduct.jsp

제품리스트를 조회하기 위한 화면으로 ProductController

list()메소드를 호출하여 리스트를 보여준다

updateProduct.jsp

제품 수정을 위한 화면으로 ProductController get()메소드를 이용하여 내용을 조회하고 update()메소드를 호출하여 수정되도록 한다

Config File 

product-servlet.xml

제품(Product)관련 웹페이지 요청에 대한 ProductController 매핑정보가 정의 되어 있으며, ProductController Bean에서 사용하는 서비스 Bean정보와 프로퍼티 정보가 정의되어 있다.

2) 카테고리(Category) 관련 구성요소

종류

구성요소

Controller 

CategoryController.java

카테고리 도메인에 관련된 기본 CRUD 기능을 호출하는 각각의 add(), update(), list(), delete() 메소드로 구성되며 Add, Update, Delete 대한 double submit 방지 기능이 적용되어 있다

JSP 

addCategory.jsp

카테고리 등록을 위한 화면으로 CategoryController add()메소드를 호출하여 제품등록처리를 한다

listCategory.jsp

카테고리 리스트를 조회하기 위한 화면으로 CategoryController

list()메소드를 호출하여 리스트를 보여준다

updateCategory.jsp

카테고리 수정을 위한 화면으로 CategoryController get()메소드를 이용하여 내용을 조회하고 update()메소드를 호출하여 수정되도록 한다

Config File 

category-servlet.xml

카테고리 관련 웹페이지 요청에 대한 CategoryController 매핑정보가 정의 되어 있으며, CategoryController Bean에서 사용하는 서비스 Bean정보와 프로퍼티 정보가 정의되어 있다.

 

3) 공통(Common) 구성요소

종류

구성요소

Interceptor 

AuthorizationInterceptor.java

페이지 권한처리를 위한 인터셉터로 세션에서 로그인 아이디를 받아서 권한 정의된 사용자 여부를 체크

LoginInterceptor.java

중간접속 차단을 위해 만든 Login여부 체크 인터셉터

Config File 

common-servlet.xml

Spring MVC에서 제공하는 기본적인 Resolver들을 정의하여 사용한다. (ex> viewResolver, paramResolver, handlerMapping)

security-servlet.xml

사용자 로그인에 관련된 매핑 정보가 정의되어 있다.

 

제 4 장    MiPlatform Template 소개

4.1. 개요

Anyframe MiPlatform Template은 비즈니스 레이어를 구성하는 Service(anyframe-template-mi-service)프로젝트와 프리젠테이션 레이어를 구성하는 Web(anyframe-template-mi-web)프로젝트로 구성되어 있다.

Service프로젝트는 Anyframe Core 3.2.0의 Spring IoC, Spring AOP, MiPQueryService를 이용하여 구현하였고, Web프로젝트는 Anyframe Web 3.2.0의 Spring MVC를 기반으로 구현되어 있다.

Template에서 구현한 서비스는 분류체계(Category)의 등록, 수정, 삭제, 조회 기능으로 일반적으로 많이 사용되는 기능을 중심으로 하되 확대가 용이한 구조로 구현하였다. 단, MiPlatform을 이용한 화면 구성(jsp, xml)에 대해서는 MiPlatform에서 제공하는 툴을 이용하도록 한다.

 

4.2. 구 현

4.2.1. 비즈니스 레이어

비즈니스 서비스는 아래 그림과 같이 서비스 인터페이스 클래스, 서비스 구현클래스, DAO 클래스로 구성되어 있다.

1) 분류체계(Category) 관련 클래스

종류

클래스

클래스 설명

서비스 인터페이스

서비스 구현

CategoryService

Category관리 기능을 제공하기 위한 인터페이스로 CRUD 작업을 하는 saveAll메소드에 카테고리 리스트 제공을 위한 findProductList 메소드로 구성

CategoryServiceImpl

CategoryService implements 하는 클래스로 CategoryDAO 메소드를 호출하여 DB처리를 하도록 한다.

Spring IoC 활용

DAO 클래스

CategoryDAO 

Category 관련 DB 조작하는 로직을 수행하고 IIdGenerationService 사용하여 유일한 아이디를 생성한다.

MiPQueryService활용, Spring IoC 활용

 

2) 공통(Common) 클래스

종류

클래스

클래스 설명

도메인 모델

SearchVO 

검색 기능과 관련된 정보를 가진 클래스로 멤버변수의 Setter/Getter 메소드로 구성

서비스구현

EmpException

BaseException 상속받은 클래스. 여러가지 입력 파라미터를 받는 생성자로 구성

ExceptionTransfer

Exception 발생되었을 Spring AOP 의해 transfer 메소드가 호출된다. Exception 별로 정의된 메시지를 MessageSource 이용하여 처리를 하도록

Spring AOP, Spring IoC 활용

LoggingAspect 

클래스의 메소드가 호출 되었을 Spring AOP 의해 beforeLogging 메소드가 실행된다. 호출된 클래스와 메소드명 그리고 호출 시점에 입력된 parameter 값까지 추출하여 Logging하는 클래스임

Spring AOP, Spring IoC 활용

※ 이외, 클래스들은 Security 관련 클래스로 서비스 인터페이스 클래스인 AuthenticationService와 그 구현클래스인 DBAuthenticationService, java.util.Properties를 상속받은 Credential 클래스로 구성되어 있다.

4.2.2. 프리젠테이션 레이어

MiPlatform Template의 프레젠테이션 레이어는 Spring MVC 기반으로 작성되어 있어 아래 그림 같이 DispatcherServlet, Interceptor, Controller 로 구성되어 있다.

 

 

 

 

 

 

 

 

 

 

 

[프레젠테이션 레이어 구성]

 

1) 카테고리(Category) 관련 구성요소

종류

구성요소

Controller 

CategoryMiPController.java

Category 도메인에 관련된 리스트 출력을 위한 getCategoryLIst()메소드와, 데이터의 일괄 저장을 위한create, update, delete 기능을 동시에 처리하는 updateCategory() 메소드가 정의되어 있다.

Config File 

category -servlet.xml

Category 관련 웹페이지 요청에 대한 Category관련 Controller 대한 매핑정보가 정의 되어 있으며, Controller Bean에서 사용하는 서비스 Bean정보와 프로퍼티 정보가 정의되어 있다.

 

2) 공통(Common) 구성요소

종류

구성요소

Interceptor 

LoginInterceptor.java

중간접속 차단을 위해 만든 Login여부 체크 인터셉터

Config File 

common-servlet.xml

Spring MVC에서 제공하는 기본적인 Resolver들을 정의하여 사용한다. (ex> viewResolver, paramResolver, handlerMapping)

security-servlet.xml

사용자 로그인에 관련된 매핑 정보가 정의되어 있다.

 

제 5 장    Base Framework

본 문서에서는 템플릿에서 활용하고 있는 기능들에 대해서 개발자들이 꼭 알아야 할 사항에 대해서만 기술하므로, 여기서 언급하는 내용에 대한 자세한 가이드는 Anyframe Java 매뉴얼 참고하기 바란다.

5.1. Spring IoC

  1. 개 요
    한 클래스가 특정 작업을 수행하기 위해 필요한 다른 클래스들을 직접 생성하거나 획득하지 않고, 이러한 의존성들을 외부에 정의하고 컨테이너에 의해 공급받는 방법을 IoC(Inversion of Control)라고 한다. 이는 Spring Framework의 핵심적인 개념으로 템플릿에서는 모든 클래스에서 외부 클래스를 참조할 때 이 방법을 이용하고 있다.

 

  1. 서비스 사용 설명
    1. 서비스 속성 정의 파일 생성
      [템플릿 압축해제 폴더]/src/main/resource/spring/common/*.xml
      [템플릿 압축해제 폴더]/src/main/resource/spring/hibernate/*.xml
      [템플릿 압축해제 폴더]/src/main/resource/spring/query/*.xml
    2. 서비스 속성 정의 파일에 bean class 선언
    3. 서비스 속성 정의 파일에 클래스에서 참조하는 다른 클래스 정의
    4. bean class에서 사용하기 위한 Setter 정의

     

     

     

5.2. Spring AOP

  1. 개 요
    비즈니스 로직이 구현된 코드를 수정하지 않고서 특정 클래스 및 메소드를 패턴 매칭 방법으로 정의하여 지정된 패턴이 실행되는 시점에 필요한 공통 작업을 수행하게 해주는 서비스로 템플릿에서는 Logging, Exception, Transaction 등의 처리를 수행하는 샘플을 제시함

 

  1. Logging Aspect
    1. 서비스 속성 정의 파일 생성
      [템플릿 압축해제 폴더]/src/main/resource/spring/common/context-aspect.xml
    2. 서비스 속성 정의 파일에 Logging처리 Class 선언
    3. 서비스 속성 정의 파일에 수행시점을 패턴매칭방법으로 정의
    4. 서비스 속성 정의 파일에 동작시점과 수행 메소드 선언
    5. Logging처리 Class에 수행 메소드 구현

     

     

     

     

 

  1. Exception Aspect
    1. 서비스 속성 정의 파일 생성
      [템플릿 압축해제 폴더]/src/main/resource/spring/common/context-aspect.xml
    2. 서비스 속성 정의 파일에 Exception처리 Class 선언
    3. 서비스 속성 정의 파일에 수행시점을 패턴매칭방법으로 정의
    4. 서비스 속성 정의 파일에 동작시점과 수행 메소드 선언
    5. Exception처리 Class에 수행 메소드 구현
      구현 기능 : Exception을 EmpException, Exception으로 구분하여 처리하며. Exception을 throw하기 전에 ERROR 레벨의 로그를 남김. 각 Exception을 구현 클래스에서 처리하지 않고 정해진 규칙에 맞게 해당하는 Exception key를 찾아 처리함. 따라서 메소드 별 특정 값에 대한 로그 처리는 개별적으로 구현 필요함

     

     

  2. Transaction 관리
    1. 서비스 속성 정의 파일 생성
      [템플릿 압축해제 폴더]/src/main/resource/spring/hibernate/context-transaction.xml
      [템플릿 압축해제 폴더]/src/main/resource/spring/query/context-transaction.xml
    2. 서비스 속성 정의 파일에 Transaction처리 Class 선언
    3. 서비스 속성 정의 파일에 수행시점을 패턴매칭방법으로 정의
    4. 서비스 속성 정의 파일에 동작시점과 수행 메소드 선언

     

     

5.3. Hibernate

  1. 개 요
    Hibernate는 객체지향모델링(Object Oriented Modeling)과 관계형 데이터 모델링 (Relational Data Modeling) 사이의 불일치를 해결해 주는 ORM 도구로 특정 플랫폼에 의존적인 제약을 정의하고 있지 않기 때문에 POJO 기반의 개발이 가능하고 또한 Java에서 지원하는 다양한 Collection 유형을 지원함으로써 객체 모델링을 관계형 모델링으로 매칭하는데 따르는 제약을 최소화하고 있다. 본 Template에서는 Hibernate를 활용하여 CRUD를 구현하는 샘플을 제시함.

 

  1. 서비스 사용 설명
    1. 서비스 속성 정의 파일 생성
      [템플릿 압축해제 폴더]/src/main/resource/spring/hibernate/context-hibernate.xml
    2. 서비스 속성 정의 파일에 매핑 정의 파일 위치 지정
    3. 서비스 속성 정의 파일에 dynamicHibernateService를 위한 설정 파일 지정
    4. 매핑정의 파일 설정(②에서 위치 지정한): hibernate 툴 이용해 자동생성 가능
      [템플릿 압축해제 폴더]/src/main/resource/hibernate/Category.hbm.xml
      테이블 컬럼과의 매핑정보 정의
      CRUD외 Query 정의 (CRUD는 Query 정의 없이 가능)
    5. dynamicHibernateService를 위한 설정 파일 정의(③에서 파일 지정한)
    6. DAO 클래스에서의 사용

     

     

     

     

  2. DataSource 서비스 설정 (Hibernate와 Query에서 모두 사용함)
    1. 서비스 속성 정의 파일 생성
      [템플릿 압축해제 폴더]/src/main/resource/spring/common/context-datasource.xml
    2. DB 관련 정보 설정(HSQL 설정 정보)

    아래QueryService의 'DataSource 서비스 설정'설명 참고.

     

     

     

     

5.4. Query 서비스

  1. 개 요
    쿼리 문이나 객체의 입력만으로 DB 데이터 조작을 가능하게 하는 서비스로 JDBC(Java Database Connectivity)를 이용한 데이터 액세스 수행 부분을 추상화함으로써 간편한 데이터 액세스 방법을 제공하고, JDBC 사용시 발생할 수 있는 공통 에러를 줄여주게 된다. 본 Template에서는 DAO 클래스에서 Query 서비스에서 제공하는 AbstractDAO를 상속받아 CRUD를 구현하는 샘플을 제시함.

 

  1. 서비스 사용 설명
    1. 서비스 속성 정의 파일 생성
    2. 서비스 속성 정의 파일에 매핑 정의 파일 위치 지정
    3. 매핑정의 파일 설정(②에서 위치 지정한)
    4. DAO 클래스에서의 사용

     

     

     

    QueryService의 AbstractDAO에서 제공하는 메소드들을 사용하면 DAO클래스를 간단하게 만들 수 있다. 자세한 내용은 Anyframe Java의 Query서비스 매뉴얼 참고.

     

     

     

     

     

     

 

  1. DataSource 서비스 설정 (Hibernate와 Query에서 모두 사용함)
    1. 서비스 속성 정의 파일 생성
      [템플릿 압축해제 폴더]/src/main/resource/spring/common/context-datasource.xml
    2. DB 관련 정보 설정(HSQL 설정 정보)
    3. Anyframe에서 제공하는 ID Generation 서비스가 사용하는 DataSource는 따로 분리.

     

     

5.5. MiPQueryService

  1. 개 요
    MiPQueryService는 MiPlatform 기반 개발을 위해 Query 서비스를 확장한 서비스이며 query작성만으로 Table에 특정 Data를 insert, update, delete, select할 수 있다.
    기본적으로 QueryService를 확장한 것이기 때문에 설정방법은 QueryService와 유사하다. 설정 XML의 자세한 속성 정보들은 Anyframe Java 의 매뉴얼을 참고하기 바란다.

 

  1. 기본 서비스 사용 설명
    1. 서비스 속성 정의 파일 생성
      [MiPlatform 템플릿 압축해제 폴더]/src/main/resource/spring/context-query.xml
    2. 서비스 속성 정의 파일에 매핑 정의 파일 위치 지정
    3. 매핑 정의 파일 설정(②에서 위치 지정한)
    4. DAO 클래스에서 사용

     

     

    ※ MiPQueryService를 이용해 DB에 값을 전달하기 전, 후에 특정 값을 셋팅해야 하는 경우가 있다. 이 때 위의 CategoryMiPActionCommand 클래스처럼 anyframe.core.query.ria.mip.IMiPActionCommand를 구현한 클래스를 통해 필요한 비즈니스 로직을 추가할 수 있다.

     

5.6. Spring MVC

  1. 개 요
    Spring MVC를 이용하여 프리젠테이션 레이어를 개발 할 때에는 크게 Controller와 Config 파일(Mapping XML), JSP(Custom Tag) 세 개의 파일을 작성해야 한다. 또한 필요에 따라 Interceptor, Validator등을 구현할 수 있다.

 

  1. 기본 서비스 사용 설명
    1. Config 파일(Mapping) 작성
      ⓐ Control Class 정의, ⓑ 호출 Service Bean 정의 ⓒ 사용 프로퍼티 정의
      ⓓ 중복 서브밋 방지 프로퍼티 정의 – 이중 저장 방지를 위한 기능 구현
    2. Controller 구현
      ⓐ Service Bean Setter 정의, ⓑ 폼 입력 데이터 바인딩, ⓒ ModelAndView 객체 리턴
    3. JSP 구현

     

     

     

     

     

     

     

     

     

     

  2. Interceptor 구현
    1. Config 파일(Mapping)에 Interceptor 정의
    2. Interceptor 구현

     

     

     

     

  3. Anyframe Tag Library 사용
    1. Page Navigator Tag 사용
    2. Message Tag 사용

     

 

5.7. MiPlatform

  1. 개 요
    SpringMVC와 MiPlatform을 이용하여 Presentation Layer를 개발 할 때에는 크게 Controller와 Config 파일(Mapping XML), MiPlatform 관련 화면 구성 파일(이는 MiPlatform에서 제공하는 툴을 사용하여 별도로 작성)을 작성해야 한다.

 

  1. 기본 서비스 사용 설명
    1. Config파일(Mapping XML) 작성
      Control Class 정의, 호출 Service Bean 정의
    2. Controller구현
      Service Bean Setter 정의, 비즈니스 서비스 호출 후 Dataset 생성,
      ds_access에 리턴할 Dataset 셋팅

     

     

     

 

5.8. 기타

본 Template은 설명된 서비스 외에도 PropertiesService, IdGenerationService, MessageSource를 이용하여 구현되었다. 각각에 대한 사용 방법은 아래와 같다.

 

  1. Properties Service
    변경 사항이 빈번한 property(여기에선 PAGE_SIZEPAGE_UNIT)에 대해 소스가 아닌 XML에 정의하여 관리할 수 있다.


  2. ID Generation Service
    TableIdGenerationService를 사용하여 Table기반의 유일한 Id를 자동 생성시킬 수 있도록 작성하였다.

 

 

 

  1. MessageSource
    프로젝트에 맞는 message 정의 properties파일을 만들고 이 properties 파일의 위치를 MessageSource bean에서 정의한다.

 



 

 

별첨-1. 주요 클래스 다이어그램
Category @Basic Template

 

별첨-2. 주요 클래스 다이어그램
Category @MiPlatform Template

 

'개발도 하냐?' 카테고리의 다른 글

JEUS 설정  (0) 2009.11.04
전자세금계산서/세금계산서 업체 정보리스트  (0) 2009.10.29
Anyframe Doc  (0) 2009.09.16
JSP_MVC 형식  (0) 2009.09.16
Eclipse + JEUS  (0) 2009.08.19
약도 만들기  (0) 2009.08.14

+ Recent posts