3

休止状態の初心者。session.get()「オブジェクトが既にキャッシュされている場合にデータベースのヒットを回避する」方法を理解しようとしています

List<Employee> employees1 = session.createCriteria(Employee.class).list();

Main main = new Main();
try {
    synchronized (main) {
        main.wait(10000);
    }
} catch (InterruptedException e) {e.printStackTrace();}

Employee  employees2 = (Employee)session.get(Employee.class, new Long(1));
System.out.println(employees2.getFirstname() + " , "+ employees2.getLastname() );
  1. 最初の行で、ファーストネームが「ケビン」、ラストネームが「パパド」のレコードを取得しました

  2. それが待っている間に、私はデータベースに行き、名前を「スティーブ」に変更しました

  3. session.get()データベースにヒットせず、ファーストネームを「ケビン」、ラストネームを「パパド」として値を取得していますが、これは間違っています。

その間(上記の1番目と3番目のステップの間)誰でもデータベースの値を変更できるので、私は待ち続けました。その場合、3番目のステップで正しい値を取得するにはどうすればよいですか? つまり、'steve' のファーストネーム

コードにどのような変更を加える必要がありますか?

私の理解/アプローチが間違っている場合は修正してください。

4

1 に答える 1