博为峰小博老师:
在Hibernate的Session的管理中,如果程序对持久化状态的对象做出了修改,当Session刷出时Hibernate会对实例进行持久化操作,利用Hibernate的该特性就可以实现商品信息的修改操作。
Session的刷出(flush)过程是指Session执行一些必需的SQL语句来把内存中的时象的状态同步到JDBC中。刷出会在某些查询之前执行,在事务提交时执行,或者在程序中直接调用Session.flush()时执行。
public class BWF{
public static void main(String[] args) {
Session session = HibernateUtil.getSession();//获取Session
session.beginTransaction();
Product product=(Product) session.get(Product.class, 100001);
product.setPrice(299);
product.setName("促销女士牛仔裙");
product.setRemark("促销");
session.flush();//刷新提交
session.getTransaction().commit();
HibernateSessionFactory.closeSession();//关闭Session
}
}
数据更改前:
数据更改后:
hibernate flush与update区别
l update操作的是在*态或脱管状态(detached,因为session关闭而处于脱管的状态)。
l flush操作则必须要求对象在持久态(persistent).
l 默认情况下一个持久态(persistent)对象的修改是不需要手动调用update,方法的,只要改了对象的值,那么在session关闭时,会自动调用flush对已经修改的持久态(persistent)对象进行update
l Hibernate中用get方法得到一个对象,并对这个对象进行修改,如果不打开事务是不会自动对这个对象进行保存,就是调用flush方法也不会进行保存。