2009-03-16 5 views
1

MySQL이 nhibernate를 사용하여 삽입 된 객체에 기본 키를 할당하도록 허용하려면 어떻게해야합니까? 생성기를 "ID"유형으로 설정하려고하지만 문서에서 "..resquire [s] 두 SQL 쿼리를 사용하여 새 개체를 삽입하십시오." 왜 그렇게했을까요? 정상적인 삽입 SQL 문처럼이 기능을 사용할 수있는 방법이 있습니까?데이터베이스에서 nhibernate의 기본 키를 선택하도록

답변

2

두 개의 쿼리가 필요한 이유는 ID가 있으면 열이 삽입 될 때까지 열 값이 정의되지 않기 때문입니다. 따라서 삽입 된 객체에 대한 열 값을 가져 오기 위해서는 select after insert가 필요합니다. 이것은 꽤 표준이며, 자동 생성 된 키를 기본 키로 사용하지 못하게합니다. 다른 옵션은 키를 미리 생성하는 것입니다. 예를 들어 새 객체에 대한 GUID를 데이터베이스에 유지하기 전에 말입니다. 대부분의 경우 자동 생성 된 키가 충돌 할 수있는 별도의 데이터베이스에서 데이터를 병합해야하는 등의 완화 조치가없는 한 이점을 실제로 볼 수 없습니다.

2

분명히 장점이 있습니다. NHibernate가 id 생성기로 Guids 나 Hilo를 사용하게하면 Hibernate에서 매우 멋진 기능인 일괄 처리가 가능해집니다. 일괄 처리를 사용하기 위해 Hibernate를 설정하면 (예를 들어, 1000 문장), 삽입이 갑자기 매우 빠릅니다.

Fabio는 다양한 사용 가능 생성자에 대한 게시물을 가지고 있습니다. here - NHibernate를 사용하거나 (NHibernate가 잘못 수행한다고 생각하는 사람을 알고있는 경우) 매우 유용합니다.

관련 문제