public void testClear(){ System.out.println(t.getName()); Teacher t2 = (Teacher) session.get(Teacher.class, 3); System.out.println(t2.getName()); session.getTransaction().commit(); } 这里虽然用了2个get方法(get方法会立即执行sql语句),但因为第一次执行了会缓存一个ID为3的实体,所以虽然有2个get方法只执行一次SQL语句。 public void testClear(){ session.beginTransaction(); Teacher t = (Teacher) session.get(Teacher.class, 3); System.out.println(t.getName()); session.clear();//这里不clear只会执行一次sql语句,有clear会执行2次 Teacher t2 = (Teacher) session.get(Teacher.class, 3); System.out.println(t2.getName()); session.getTransaction().commit(); } 2.Flush方法 , 可以强制进行从内存到数据库的同步。 public void testFlush(){ session.beginTransaction(); Teacher t = (Teacher) session.get(Teacher.class, 3); t.setName("yyy"); t.setName("yyyyy"); session.getTransaction().commit(); } public void testFlush(){ Teacher t = (Teacher) session.get(Teacher.class, 3); t.setName("yyy"); session.flush();//有flush会执行2次UPDAE,没有会只执行一次 t.setName("yyyyy"); session.getTransaction().commit(); } Flush方法是可以设置的,也就是 fulsh 什么时候执行是可以设置的 在session.beginTransaction 前设置 FlushMode |
|