2014-06-12 4 views
0

데이터베이스 매핑을 위해 grails GORM을 사용하고 값으로 채워진 데이터베이스로 oracle을 사용하고 있습니다. 내 질문은 도메인 클래스에서 Foreign key와 같은 새로운 제약 조건을 정의 할 수 있습니까? 내 레거시 db의 기본 테이블에 정의 된? grails 애플 리케이션은 여전히 ​​제약 조건을 받아 들일 것인가? 제약 조건은 데이터베이스 권리와 정확히 일치해야하지 않습니까? 다음과 같이Grails 도메인 클래스 제약 조건과 레거시 데이터베이스 제약 조건

답변

0

예, 도메인 클래스에 정의한 제약 조건은 데이터베이스에있는 제약에 관계없이 존중됩니다. 2가 실제로 관련된 유일한 시간은 Hibernate가 생성 된 DDL에 영향을주는 특정 제약 조건이있는 경우 (대부분 프로덕션 환경에서 수행하지 않는) 사용자를 위해 DDL을 생성하게하는 경우입니다. 당신은 이미 데이터베이스를 가지고 있기 때문에 당신은 거의 확실하게 꺼져 있습니다.

EDIT :

DDL은 size 제약 인 영향을 제한의 예. size: 5..15과 같이 String 필드를 제한하면 기본적으로 생성되는 DDL은 15 자의 열을 만듭니다. 앱이 DDL을 생성하도록 허용하지 않는 경우 유효성 검사 시간에 여전히 제약 조건이 적용되며 속성에 15 자 이상 또는 5 미만이 있으면 유효성 검사가 실패합니다. 유효성 검사가 통과되고 데이터가 데이터베이스로 보내지면 프레임 워크는 모든 것이 정상이 될 것이라고 가정합니다. 그렇지 않은 경우, 대응하는 예외가 슬로우 될 가능성이 있습니다. 예를 들어 String에 12 문자가 있으면 앱에서 유효성 검사를 통과하고 데이터베이스로 전송됩니다. 데이터베이스 열의 길이가 8 자이면 SQLException을 얻습니다. 나는 그것이 의미가 있기를 바랍니다.

+0

예, 도움이됩니다. 감사합니다. – Rradhak

1

당신은 DB 이러한 특성의 표현이 필요하지 않습니다이로 DB에 의한 저장되지 않습니다 클래스의 속성을 정의 할 수 있습니다 정의됩니다

class Person { 
    String name 
    static transients = ['name'] 
} 

정보를 볼 수에 대한 transients . 2.x에서 transient는 here 문서에 나열된대로 자동 바인딩되지 않으므로 bindable: true을 명시 적으로 수행해야합니다.

관련 문제