2009년 8월 8일 토요일

Java로 Ruby on Rails의 RESTful, scaffold처럼 웹개발하기

Ruby on Rails가 생산성이 좋은 이유에는 여러가지가 있지만,
그중에서 한가지가 RESTful동작의 scaffold를 자동으로 생성해 준다는 것이다.

Ruby on Rails는 Creating a weblog in 15 minutes with Rails 2
를 보면 알겠지만, DB를 기반으로 모델을 생성하고,
create, update, delete, list 등의 기본 동작을 하는 controller와 view를 생성해 준다.
이런 기능을 발판코드를 만든다고 말하며 scaffold 기능이라고 한다.

이것은 개발 초기에 생산성을 크게 향상시켜준다.

이와 비슷한 동작을 Java에서 구현 할 수 있는 방법을 소개하려고 한다.
사용할 프레임워크와 플러그인, 라이브러리는
  • Struts2 - 웹개발프레임워크 ( + Spring 사용)
  • iBATIS - DATA Mapper
  • iBATOR - DB Table을 기반으로 DAO, Model 소스 제너레이터
  • Struts2 Convention Plugin - Java의 XML홍수 속에서 XML을 대신한 Convention으로 동작 하도록 함.
  • Struts2 REST Plugin - Ruby on Rails와 같은 RESTful 지원
  • uBATOR - (자체제작) DB Table을 기반으로 controller, view 소스 제너레이터

DB Table을 생성하고,
iBATOR를 이용해서 Java Model과 DAO를 만든다.

Struts2를 다운로드 받으면, struts2-rest-showcase-2.1.6.war 가 들어있는데,
아주 훌륭하다.
이것을 기반으로 RESTful application을 만든다.

그런데, Controller, View를 노가다로 만들어 주려니 여간 힘든 것이 아니다.
iBATOR 소스코드가 공개되어 있으니, 약간 수정하여
Controller, View를 자동 생성하는 uBATOR를 만든다.

이렇게 만들면..
DB에 Table만 생성하면, Ruby on Rails에서 scaffold와 같이
Java에서도 RESTful로 동작하는 web application을 몇분만에 만들 수 있다.