2014-03-04 21 views
0

다른 레거시 소프트웨어에서 계속 사용되는 대규모 레거시 데이터베이스에 액세스하는 Grails 애플리케이션을 개발 중입니다. 나는 grails/hibernate가 클래스 당 하나의 테이블만을 수행 할 수 있기 때문에 실제 테이블 도메인 모델 클래스가 될 수없는 여러 테이블에서 데이터를 가져 오기 때문에 레거시 데이터베이스의 도메인 모델을 모방 한 다양한 Groovy 클래스를 만들었습니다.Grails : 도메인 클래스가 아닌 도메인 클래스

저는 데이터베이스에 새로운 테이블을 추가 할 애플리케이션의 새로운 부분에 대해 작업하고 있습니다. 따라서 실제 grails 도메인 모델 클래스를 사용하고 grails/hibernate에 해당 작업을 수행 할 수 있습니다. 내가 겪고있는 문제는 실제 grails 도메인 모델 클래스가 그들의 속성으로 가장하는 도메인 모델 클래스를 가질 필요가 있다는 것이다. 그러나, 이러한 절충 도메인 모델 클래스를 다루는 방법을 모르기 때문에 최대 절전 모드가 실패합니다.

디자인 관점에서이 상황을 처리하는 방법에 대한 제안을 찾고 있습니다. 내가 생각할 수있는 한가지 방법은 실제로 척 모델 모델 클래스를 grails 도메인 모델 클래스의 프로퍼티로 사용하지 않고 대신 척 도메인 모델 클래스를 식별/재 작성할 수있는 일종의 고유 식별자를 저장하는 것이다. 그러나, 나는 이것에 대한 더 우아한 해결책을 원하고있다. 그렇지 않다면, 이것을 자동화하는 방법이 없기 때문에, 그것은 가능한 한 무의미하다.

모든 제안, 아이디어 등을 높이 평가합니다. 당신이 정말로 척 도메인 모델을 실제 도메인 모델을 만들 수없는 경우

+0

큰 소리로 생각하고 있습니다. 도메인 클래스를 반영하지만 여러 테이블을 기반으로하는 db 뷰를 만들 수 있습니까? – aldrin

답변

0

나는 내 문제 (http://grails.org/doc/2.3.x/guide/GORM.html#customHibernateTypes)를 해결하기 위해 유형을 최대 절전 모드 사용자 정의 사용하여 끝났다. 그것들은 도메인 모델 클래스에 어떤 종류의 식별자를 저장하는 과정을 자동화하여 가상 도메인 모델 클래스를 재생성/재로드 할 수있게 해줍니다.

0

, 당신은이 옵션은 실제 도메인 모델 클래스에 transient 속성에서 척 도메인 모델 클래스를 유지하고 최대 절전 모드 이벤트 내부에 손으로 이들을 관리하는 것입니다 :

class RealDomain { 

    transient pretendDomain 

    def beforeValidate() { /* validate pretendDomain */ } 
    def beforeInsert() { /* save pretendDomain */ } 
    def beforeUpdate() { /* update pretentDomain */ } 
    // and so on 

} 
0

이 같은 도메인 개체에 과도의 목록을 넣을 수 있습니다 :

MyObject1 property1 
MyObject2 property2 

static transients = ['property1', 'property2', etc.] 
관련 문제