私はOrmの仕事に不慣れで、この質問は、NHibernateの永続性モデルと、一時オブジェクトと永続オブジェクトの違いについて私に起こりました。
1 に答える
nhibernateのドキュメントからの定義は次のとおりです。
永続オブジェクトとコレクション
永続的な状態とビジネス機能を含む、存続期間の短いシングル スレッド オブジェクト。これらは通常の POCO かもしれませんが、それらの唯一の特別な点は、現在 (正確に 1 つの) ISession に関連付けられていることです。セッションが閉じられるとすぐに、セッションは切り離され、任意のアプリケーション層で自由に使用できます (たとえば、プレゼンテーションとの間のデータ転送オブジェクトとして直接)。
一時的なオブジェクトとコレクション
現在 ISession に関連付けられていない永続クラスのインスタンス。それらは、アプリケーションによってインスタンス化され、(まだ) 永続化されていないか、クローズされた ISession によってインスタンス化された可能性があります。
インスタンスの状態について:
永続クラスのインスタンスは、永続コンテキストに関して定義される 3 つの異なる状態のいずれかになります。NHibernate ISession オブジェクトは永続コンテキストです。
一時的な
インスタンスは永続コンテキストに関連付けられておらず、関連付けられたこともありません。永続的な ID (主キー値) はありません。
持続的に
インスタンスは現在、永続コンテキストに関連付けられています。これには、永続的な ID (主キー値) と、おそらくデータベース内の対応する行があります。特定の永続コンテキストについて、NHibernate は、永続 ID が CLR ID (オブジェクトのメモリ内の場所) と同等であることを保証します。
切り離された
インスタンスは永続コンテキストに関連付けられていましたが、そのコンテキストが閉じられたか、インスタンスが別のプロセスにシリアライズされました。これには永続的な ID があり、おそらくデータベース内に対応する行があります。デタッチされたインスタンスの場合、NHibernate は永続 ID と CLR ID の関係について保証しません。