Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
エンティティに対するpersist操作を実行するには,EntityManagerのpersistメソッドを呼び出します。EntityManagerのpersistメソッドを呼び出したり,persist処理がカスケードされたりすると,エンティティはデータベースへの永続化や永続化コンテキストでの管理対象になります。
次の表に,persist操作後のエンティティの状態をエンティティの状態ごとに示します。
表6-8 Persist操作でのエンティティの状態
エンティティの状態 | persist操作後のエンティティの状態 |
---|---|
new※ | managedに遷移します。managedに遷移したエンティティはトランザクションのコミット時またはコミット前にデータベースに追加されます。または,flush操作の実行の結果としてデータベースに追加されます。 |
managed | persist操作は無視されます。ただし,エンティティからほかのエンティティへのリレーションシップのcascade属性にPERSISTまたはALLが指定されていると,このエンティティが参照するエンティティにpersist操作が伝播されます。 |
detached※ | データベースにエンティティと対応する行が存在しない場合は,managedに遷移します。対応する行が存在する場合,EntityExistsExceptionが発生します。 |
removed | managedに遷移します。 |
注※ CJPAプロバイダの場合,エンティティの状態がnewまたはdetachedの場合,データベース上にエンティティに対応するデータが存在するかどうかでエンティティの状態遷移の結果が異なります。CJPAプロバイダの場合,次のことに注意してください。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.