2011-02-28 5 views
1

Javadoc가@ SequenceGenerator에 이름이있는 이유는 무엇입니까?

이 이 에 하나 개 이상의 클래스에서 참조 할 수있는 고유 한 발전기 이름의 상단에 넣어 기본 키 값

그러나 그 주석에 대한 발생 될 말한다 @Entity, 그래서 나는 그 추론을 이해하지 못한다.

다른 @Entity에 정의 된 @Entity @SequenceGenerator에서 사용할 수 있습니까?

답변

6

아이디어는 여러 엔터티가 키 공간을 공유하려고 할 수 있다는 것입니다. 두 기관 Foo을 가지고 Bar 당신이하지 않으려 것 예를 들어

모두 ID 1과 FooBar ID 1. 당신은 할 줄 그들의 @SequenceGenerator 주석 같은 name을 지정하여.

+0

키 공간이란 무엇입니까? 코드 예제를 줄 수 있습니까? 한 클래스에서 두 개의 @Enitites를 의미합니까? – IAdapter

+1

아니요. 키 범위가 두 개의 개별 항목에 의해 공유됨을 의미합니다. 나는. 타입 A의 엔티티가 키 값 '1'을 갖는다면, 타입 B의 엔티티는 그 키 값을 사용하지 않을 것이다. –

+0

@Entity에서 두 개의 필드를 의미합니까? – IAdapter

0

@GeneratedValue 주석에서 generator를 사용할 때 이름으로 참조하십시오. 이것이 이름이 사용 된 이유입니다. 시퀀스 생성기는 GeneratedValue 주석 내에서 선언 될 수 있지만 달리 결정됩니다. 여러 필드에서 동일한 Generator를 사용하거나 엔티티간에 공유 할 수도 있습니다. 이 기능을 사용하지 않으면 당연히 약간의 오버 헤드가 있습니다.

+0

방금 ​​모든 프로젝트에서 @Entity에 @SequenceGenerator (name = "seq", sequenceName = "SEQ_TABLE", allocationSize = 1) 주석이 있습니다. 이름은 항상 동일하며 다른 @Enities로 누설되지 않습니다. – IAdapter

관련 문제