행복한 아빠

[Grails1.0 사용자 가이드] 15. Grails 와 Hibernate 본문

Grails

[Grails1.0 사용자 가이드] 15. Grails 와 Hibernate

행복한아빠 2008. 3. 12. 13:46


15. Grails 와 Hibernate

만일 GORM(Grails Object Relation Mapping)이 원하는만큼 유연하지 않다면 대안으로 Hibernate를 이용하여 도메인 클래스를 매핑할 수 있다. 이것을 하려면 프로젝트의 grails-app/conf/hibernate 디렉토리의 hibernate.cfg.xml을 생성하고 당신의 도메인 클래스에 대응하는 HBM 매핑 xml 파일을 만든다.

사용자 삽입 이미지
매핑에 대한 더 자세한 정보는 Hibernate 웹사이트의 documentation on mapping을 참조한다.

이것으로 Grails 도메인 클래스를 더 다양한 범위의 레가시 시스템에 매핑할 수 있고 보다 유연하게 데이터베이스 스키마 생성을 할 수 있다.

Grails에서는 자바로 도메인 모델을 작성할 수 있거나 Hibernate로 매핑된 이미 존재하는 도메인 모델을 재사용할 수도 있다. 이것을 위해 해야 할 일은 필요한 hibernate.cgf.xml 파일과 관련 매핑 파일을 grails-app/conf/hibernate 디렉토리에 넣는 것이다.

게다가 좋은 소식은 여전히 GORM의 동적 저장과 질의 메소드를 호출할 수 있다는 것이다!


15.1 Hibernate Annotation으로 매핑하기
Grails에서 Hibernate의 자바 5.0 Annotation 지원을 이용하여 도메인 클래스를 매핑할 수 있다. Annotation을 사용 하기 위해서는 DataSourceconfigClass를 다음과 같이 설정하여 Grails에게 annotation 설정을 사용한다고 알려줘야 한다.

import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration
dataSource {
    configClass = GrailsAnnotationConfiguration.class
    … // remaining properties
}

설정은 이게 끝이다! Annotation을 사용해야 하기 때문에 자바 5.0을 설치하였는지 확인한다. 이제 annotation 클래스를 생성하기 위해 간단히 src/java 디렉토리에 새로운 자바 클래스를 생성하고 EJB 3.0 스팩의 일부분으로 정의된 annotation들을 사용한다. (더 자세한 정보는 Hibernate Annotations Docs를 보라)

package com.books;
@Entity
public class Book {
    private Long id;
    private String title;
    private String description;
    private Date date;
    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}

그런 후 이 클래스를 Hibernate sessionFactory에 등록해야 하기 위해 grails-app/conf/hibernate/hibernate.cfg.xml 파일에 다음과 같은 엔트리를 추가한다.

<!DOCTYPE hibernate-configuration SYSTEM
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <mapping package="com.books" />
        <mapping class="com.books.Book" />
    </session-factory>
</hibernate-configuration>

Grails가 로드될 때 이 클래스에 필요한 동적 메소드를 등록한다. Hibernate 도메인 클래스로 무엇을 할 수 있는지는 Scaffolding 장을 보라.


15.2 더 읽을거리
Grails 커미터인 Jason Rudolph는 Grails와 사용자 정의 Hibernate 매핑에 관한 많은 유용한 기사를 썼다.


---
원문: 15. Grails and Hibernate

0 Comments
댓글쓰기 폼