1、Session的update方法:使一个游离对象转化为持久化对象,并且计划执行一条update语句。若希望Session仅当修改了对象的属性时才执行update()语句,可以把映射文件中<class>元素的select-before-update设为true,该属性的默认值为false。

3、我们接下来测试一段代码,看会不会调用update方法。 @Test public void testUpdate() { News news = (News) session.get(News.class, 1); transaction.commit(); session.close(); session = sessionFactory.openSession(); transaction = session.beginTransaction(); news.setAuthor("oracle185"); }

5、需要注意的是:无论要更新的游离对象和数据表的记录是否一致,都会发送update语句。 @Test public void testUpdate() { News news = (News) session.get(News.class, 1); transaction.commit(); session.close(); session = sessionFactory.openSession(); transaction = session.beginTransaction(); //news.setAuthor("oracle185"); session.update(news); }


7、可以看到触发了两条select语句。若数据表中没有对象的记录,但是还是调用了update方法,会抛出异常。