マッピング ファイルの ID ジェネレーター セクションで、NHibernate
assigned と select の意味は何ですか?
2 に答える
assigned
エンティティをセッションに保存する前に、コードで主キーを割り当てることを意味します。
select
データベースによって割り当てられ、一意のキーを照会することによってデータベースから取得されることを意味します。
アイデンティティ/シーケンスと割り当てがあります。NHドキュメントから:
5.1.5.1. 発生器
ID 列をサポートするデータベース (DB2、MySQL、Sybase、MS SQL) では、ID キーの生成を使用できます。シーケンスをサポートするデータベース (DB2、Oracle、PostgreSQL、Interbase、McKoi、SAP DB) では、シーケンス スタイルのキー生成を使用できます。どちらの方法でも、新しいオブジェクトを挿入するために 2 つの SQL クエリが必要です。
uid_sequence クロスプラットフォーム開発の場合、ネイティブ戦略は、基盤となるデータベースの機能に応じて、identity、sequence、および hilo 戦略から選択されます。
5.1.5.7. 割り当てられた識別子
(NHibernate に識別子を生成させるのではなく) アプリケーションに識別子を割り当てさせたい場合は、割り当てられたジェネレータを使用できます。この特別なジェネレーターは、オブジェクトの identifier プロパティに既に割り当てられている識別子の値を使用します。この機能を使用してビジネス上の意味を持つキーを割り当てる場合は、十分に注意してください (ほとんどの場合、ひどい設計上の決定です)。
その固有の性質により、このジェネレーターを使用するエンティティは、ISession の SaveOrUpdate() メソッドを介して保存できません。代わりに、ISession の Save() または Update() メソッドを呼び出して、オブジェクトを保存または更新する必要があるかどうかを NHibernate に明示的に指定する必要があります。