2

を使用してエンティティ「A」を取得します

getHibernateTemplate().get(A.class, 100) 

データベースから。このエンティティ「A」がデータベースにプロパティ「値」200 を持っているとします。

ここで、Java コードで、このエンティティのプロパティを変更します。たとえば、「値」プロパティを「500」に変更してから、リストに追加します。

ここで、同じエンティティに対して再度 getHibernateTemplate().get(A.class, 100) を実行すると、更新されたエンティティ (値が 500) が取得されます。コードで更新されたものではなく、データベースからエンティティを取得するように hibernate を強制するにはどうすればよいですか?

これは「第 1 レベルのキャッシュ」と呼ばれるものですか?

4

2 に答える 2

0

Google で hibernate commit、flush、および detach を検索し、それらがデータベースに書き込むタイミングを確認することをお勧めします。さらに良いことに、Hibernate に関する優れた本をまだ読んでいない場合は (amazon.com で本に関する良いレビューを検索してください)、テクノロジーを十分に理解することをお勧めします。

この投稿に返信する理由は、あなたの質問に直接回答するためではありませんが、hibernate.cfg.xml ファイルを編集して、次を true に設定することをお勧めします: < property name="hibernate.show_sql" > false < /property >。これにより、コンソール ウィンドウに表示され、データベースに送信されるすべての SQL ステートメントが一覧表示されます。このようにして、データベースへの書き込みがいつ発生したかを正確に確認できます。その後、調べたり読んだりした内容を試して、期待どおりに動作することを確認できます。

于 2013-11-08T20:36:57.543 に答える