공룡호가 사는 세상 이야기

- 중략. (송치형 scroco@naver.com) 님의 글
Hibernate는 RDB와 객체간의 Gap을 채워줌으로서 프로그래머가 DB를 객체를 다루듯 이용하게 해 준다.
이를테면, SQL은 RDB에 쿼리를 날리지만, HQL은 객체에 쿼리를 날린다. 그러면 어떻게 객체와 RDB를 매핑할 것인가? XML 매핑 파일이나 어노테이션을 이용하는 방법 등이 있다.

RDB를 객체처럼 다룰 수 있도록 해 주는 ORM의 개념은 좋지만 Hibernate를 사용하면서 가장 불편한 점은 매핑 파일을 작성하는 것인데, 물론 Ant를 이용해서 DB스키마를 통해 매핑 파일을 만들고, 매핑 파일을 통해 POJO를 만들 수 있다. 하지만 별도의 XML 설정 파일을 관리하는 건 귀찮은 작업니다.

특히 Ruby on Rails에서 제공하고 있는 ORM 프레임워크인 ActiveObject를 사용하면서 Hibernate의 설정 파일 관리가 더욱 귀찮을 것이다. 인터프리터 언어의 특징 상, 하이버네이트에서처럼 별도로 get/set으로 이루어진 POJO를 만들 필요도 없다. 단순히 모델 클래스를 규약에 맞게 만들고 객체 간의 관계(belongs to 등)를 설정해 주면 된다. 만약 규약을 맞지 않는 부분이 있다면 별도로 명시해 주면 된다.

여기서 Java로 만든 스크립트 언어인 Groovy를 이용하면 ActiveObject에 대응하는 프레임워크를 만들 수 있겠다는 생각을 할 수 있는데, 물론 ORM 프레임워크를 새로 만들 필요는 없고 Groovy를 이용해서 Hibernate를 래핑하면 될 것이라는 추측도 가능하다.

Grails(Groovy on Rails) 에는 ORM 프레임워크가 있는데 그것이 GORM이다.
"Convention over Configuration"을 따르지 않아 ActiveObject보다는 코딩이 늘어나지만 순수 자바를 이용할 때보다는 훨씬 편리하다.


- 얼마전에 보니 Grails 1.0.1 버전이 나왔던데 0.4X버전일 때, 사용해 본적이 있었다.
그 때는 버그가 꽤 많아 짜증이 좀 나기도 했지만, 일을 할 때, 가장 짜증나는 일 중에 하나가 한가지 문제에 집중하기가 어렵다는 것이었다. 이것을 하기 위해 저것을 준비해야하고, 저것을 하기 위해 이것을 하다 보면, 본래 문제가 무엇이었는지 오락가락 할 때가 많다. 하지만 Grails는 이런 점에서 매력적이었다.
웹 기반 서비스를 기획한다면 한번 쯤은 검토 해 보아야 할 프레임워크가 아닐까 싶다.

- IBM dW 에 GORM에 대한 Article에 대해 소개되었다.
좋은 웹 프레임워크는 견고한 영속성 전략을 필요한다. 여기에서는 (GORM)API, 테이블 간 관계 설정, 데이터 밸리데이션 규칙을 실행하는 방법, Grails App에 관계형 데이터베이스를 수정하는 방법을 설명하고 있다.
(영문이라 좀 아쉽지만, 어렵지 않다. 번역이 힘들다면 예제만 따라 하여도 이해가 가능할 것으로 생각된다)


링크 : http://www.ibm.com/developerworks/java/library/j-grails02128/?S_TACT=105AGX55&S_CMP=EDU

참고 : http://grails.org/GORM