그중에서 한가지가 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을 몇분만에 만들 수 있다.





안녕하세요 인터넷으로는 처음 인사드립니다. 지난번 오픈업행사때 얼굴을 뵈었던 신승우(initialz.net)입니다. 최근 java framework에 대해서 열심히 공부하면서 rails생각이 떠올라 검색하다보니 이렇게 뵙게되네요^^
답글삭제웹은 개발을 하다보면 정말 crud를 벗어나기 힘든 부분이 많은듯 합니다.그러다보니 패턴의 반복을 줄이려는 활동들도 많아지는 것 같고요.. 생산성뿐만아니라 성능과 효율, 협업능력을 갖춘환경이 예전에 비해서 많아진 것 같아 참으로 감사할 따름입니다. 좋은 글 잘 읽었습니다.^^
@initialz - 2009/08/09 14:52
답글삭제네.. 블로그까지 찾아와 주시니 감사합니다.~~
저도 생산성 높은 개발을 좋아하고, Ruby on Rails를 좋아하는데, 현실적으로는 Ruby on Rails의 단점 또한 있어요..
현업에서 Java를 많이 사용하기도 하고요.. 그래서 Ruby on Rails의 생산성을 높여주는 장점중의 하나인 scaffold를 Java로 구현 한 것입니다. Java 웹개발 시에 생산성이 많이 좋아질 것으로 기대합니다.~~
최근 Spring ROO를 보면서 RoR에 Java 쪽도 많이 영향받는다는 생각을 했어요.
답글삭제@benelog - 2009/10/21 01:23
답글삭제저는 RoR을 좋아해요. 프로젝트 규모에 따라 다르겠지만, 아주 큰 규모가 아니라면 RoR이 생산성이 좋다고 생각합니다. Java로 개발하다 보면 노가다가 많고, 스파게티가 되고 그러네요.
저도 RoR을 멋진 프레임웍이고, 그것을 만든 DHH가 천재라고 생각하고 있습니다.(사실 직접 써본적은 없고 책2권정도 읽은 수준이에요 ^^;) 그리고 위의 글에서 말씀하신대로 Java vs RoR보다는 Java framework vs RoR이 비교되어야하겠죠. Active record vs Hibernate정도라면 의미 있는 비교가 될 것 같네요. 대부분 생산성은 Active record에, 성능이나 정교한 처리에서는 Hibernate에 많은 점수를 주고 있는 것 같습니다.
답글삭제그리고, 현재 java웹개발의 패턴들이 EJB시절의 유산을 많이 따르고 있어서 생산성에 문제가 많은 것은 사실인데, 언어의 한계도 있지만, 패턴 적용의 문제가 더 큰 것 같습니다. 그런 것을 개선하기 위한 움직임들이 많이 일어나고 있는데, 사내에서는 옛날패턴을 표준으로 박아놓아서 발전이 더디다는 느낌입니다.
@benelog - 2009/10/21 14:04
답글삭제저도 DHH가 천재라고 생각하고 있습니다.^^ 공감가는 좋은 말씀 많이 해 주셔서 감사합니다.~
저는 제가 하는 일인 사내용 검색 관리도구를 개발하는데 RoR이 적합하다고 생각하는데.. 그렇게 안되죠.
Java로 개발한다면,, struts2 ibatis ibator 등과 RESTful Plugin 등의 struts2최근 발전하는 플러그인들을 쓰고싶은데 Lxxx를 비롯한 사내 프래임워크 땜에 적용하기가 힘들어요..
물론, 제가 틀린 생각을 가지고 있을수도 있어요~~^^
안녕하십니까? 혹시 재현님께서 개발하신 uBator를 공유할 수 있는지 알고싶습니다. 현재 개인적인 프로젝트로 Struts2를 사용하는데 게시판 종류가 너무 많아 각각 CRUD를 만들려고 하니 한계선을 넘어가버려 중도 포기하고 말았습니다. 가능하시다면 제가 꼭 한번 써보고 싶습니다. 답변 부탁드리겠습니다!
답글삭제email: simyoungjae@naver.com
@개발자 심영재 - 2010/03/31 10:42
답글삭제죄송합니다만, 소스가 독립 프로그램화가 되지 않아서 공유가 어렵습니다 ㅠ. iBator를 적극 활용하시면 비슷한 효과를 내실 수 있으실 꺼에요.. 저도 iBator 소스코드 수정하면서 소스생성기를 만들게 되었습니다..