4.5. 永続オブジェクト
トランザクション管理インスタンス (つまり、エンティティマネージャによりロード、保存、作成、または問い合わされたオブジェクト) は、アプリケーションにより操作され、永続ステータスの変更は、エンティティマネージャがフラッシュされるときに保持されます (この章の後半で説明)。変更を保持するために特定のメソッドを呼び出す必要はありません。エンティティインスタンスのステータスを更新する簡単な方法は
find() を使用し、直接操作することです (永続コンテキストはオープンのまま)。
Cat cat = em.find( Cat.class, new Long(69) );
cat.setName("PK");
em.flush(); // changes to cat are automatically detected and persisted
Cat cat = em.find( Cat.class, new Long(69) );
cat.setName("PK");
em.flush(); // changes to cat are automatically detected and persisted
このプログラミングモデルは SQL SELECT (オブジェクトをロードする) と SQL UPDATE (更新されたステータスを保持する) が同じセッションで必要であるため、非効率です。したがって、Hibernate はデタッチ済みのインスタンスを使用する別の方法を提供します。