1
私は次のコードを持っている:なぜデータはsession.setFlushMode(FlushMode.MANUAL)の後にデータベースに格納されますか。 session.save(); (休止状態)
Color color = new Color(null,"B12",null,1);
Session session=sessionFactory.openSession();
session.setFlushMode(FlushMode.MANUAL);
session.beginTransaction();
session.save(color);
session.clear();
session.getTransaction().commit();
session.close();
sessionFactory.close();
私はフラッシュが手動で指定されたときに、データがデータベースに保存されている理由
私はちょうどそれを得ることはありませんか?私はそれを把握するのを助けてください!
Christian Bauer、Gavin Kingの本を読みました。「FlushMode.MANUALを選択すると、 を指定すると、flush()結果を明示的に呼び出すように指定することができます同期して、データベースとの管理状態の "。そして、私のコード例では、明示的にflush()を呼び出す必要はありません。なぜそれがまだデータベースに保存されているのでしょうか? –
通常、データベースを呼び出すと自動的にフラッシュされます。 Flushmode.MANUALは、引用符付きの文のように動作します。特にコミットとは、変更をデータベースに保存することを意味します。これはそれをよりよく説明しています。http://stackoverflow.com/questions/14622962/what-is-transaction-commit-in-hibernate – darthNater
ありがとうございます、私は理解していますが、まだ少しのクエストを持っていると思います。セッションコードを編集しました。 session.save()の後に()を追加します。ドキュメンテーションは、メソッドclear()について、次のように述べています。「ロードされたすべてのインスタンスを取り除き、すべての保留中のセーブ、更新、削除をキャンセルする」なぜそれはsave()をキャンセルせず、データをデータベースに保存しますか? –