2012-02-23 2 views
1

현재 Oracle을 데이터베이스로 사용하는 webapp를 개발 중입니다. webapp도 Sybase ASE에서도 작동해야한다는 정보를 이미 받았습니다. My Oracle 데이터베이스는 시퀀스를 사용하여 ID를 생성하고 도메인 클래스를 매핑하여 해당 시퀀스를 사용합니다. 지금까지 Sybase ASE에는 시퀀스가 ​​아니라 ID가 있다는 것을 알고있었습니다. 그리고 여기에 내 문제가있다. Oracle 및 Sybase에서 작동하는 코드/구성 작업 각 도메인에 대한 ID의 "조건부 매핑"이 있습니다.Grails - 조건부 매핑

이미 매핑 된 것보다 다른 데이터베이스의 webapp을 만들 때마다 매핑의 주석을 제거하거나 주석을 제거하고 싶지 않습니다. 아무도 모르게 무엇을해야합니까?

오라클과 Sybase 사이의 또 다른 차이점은 매핑에 영향을 미칩니다 (나는 dbCreate = "create"을 사용하여 데이터베이스 구조를 생성하지 않습니다). 이 시점에서 나는 아무것도 보지 못한다. 경험이 있으십니까?


편집 : 그것은이 두 데이터베이스에 대해 하나의 매핑을 할 수는 없습니다 것으로 밝혀졌다. 내 Oracle 구조체는 열과 테이블 이름에 따옴표를 사용합니다. Sybase ASE에서는 따옴표를 사용할 수 없습니다. 일부 특정 플랫폼에서 webapp을 빌드 할 때 내 (멋지고 예쁜) 솔루션이 매핑 (주석/주석 해제)을 변경하고 있습니다.

Btw 저는 Grails의 팬입니다.이 매핑 작업은 단점이있는 것 같습니다. "순수한"Hibernate를 사용했다면 xml 파일에 두 개의 매핑이 있었고 기본 데이터베이스에 따라 변경했습니다. Grails는 두 가지 매핑을 가질 수있는 가능성을 제공하지 않습니다.

답변

1

grails를 사용하여 id 생성을위한 코드 매핑을 구성 할 수 있는지는 모르겠지만 시퀀스 또는 ID를 사용하지 않아도되고 다른 최대 절전 모드 생성기 전략 인 http://grails.org/doc/1.3.7/ref/Database%20Mapping/id.html을 사용할 필요는 없을 것입니다.

편집 :

모든 발전기가 인터페이스를 org.hibernate.id을 구현 :

는 최대 절전 모드 문서를 검토 나는 그 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-id에서 데이터베이스의 용량에 따라 가능한 사용 순서 또는 identites입니다 발견했다. IdentifierGenerator. 이것은 매우 간단한 인터페이스입니다. 일부 응용 프로그램은 고유 한 구현을 제공 할 수 있지만 Hibernate는 내장 된 구현 범위를 제공합니다.

... 기본

:

이 기본 데이터베이스의 가용성들에 따라 정체성, 시퀀스 또는 힐로을 선택 다음과 같이 내장 된 발전기에 대한 바로 가기 이름입니다.

그래서 당신은 어쩌면이 같은 구성이 필요합니다 : 그것은 좋은 소리

static mapping = { 
    id generator:'native' 
} 
+0

! Sybase 설치가 끝나면 다시 시도해 보겠습니다. – emstol

+0

불행히도 그것이 작동하는지 확인할 수 없습니다. 내 생각에 그것은 ... 오라클 id 이름 (예 : "SomeTableID")이 인용되어 있습니다.Sybse ASE는 열/테이블 이름에 따옴표를 사용할 수 없습니다. 그리고 내가 두려워했던 것이 있습니다. 두 데이터베이스 모두에 대해 하나의 매핑을 가질 수는 없습니다. – emstol

관련 문제