0

これが私のシナリオです(私はdatanucleus、JDOを使用していますが、JPAにも当てはまると思います):

tx.begin();
Dog d = new Dog();
persistenceManager.persist(d);
d.setName("Doggie");
tx.commit();

上記のコードでは、「Doggie」という名前はデータベースに永続的ではありません。ただし、行うときは

tx.begin();
Dog d = new Dog();
d.setSize(10);
persistenceManager.persist(d);
Dog d2 = dogDao.getDogBySize(10);
d2.setName("Doggie");
tx.commit();

できます!

この動作は、最初の例ではオブジェクトが管理されていないのに対し、私の「2 番目の」犬は管理されたインスタンスであり、データベースから取り出されているという事実によるものですか?

これは JDO 固有の動作ですか?

ありがとう!

4

1 に答える 1

0

上記のコードでは、実際に名前の更新がデータストアに存在します...実行すると。実際、ログを見ると、名前の最新の値で単一の INSERT を取得するときに楽観的な txns を使用しない限り、永続化のための非常に明確な INSERT が表示され、次に UPDATE が表示されます。

于 2012-04-12T14:16:53.903 に答える