博为峰Java技术文章 ——JavaEE Hibernate修改数据

时间:2021-07-07 20:26:40

博为峰小博老师:

HibernateSession的管理中,如果程序对持久化状态的对象做出了修改,当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

}

}

数据更改前:

博为峰Java技术文章 ——JavaEE  Hibernate修改数据

数据更改后:

博为峰Java技术文章 ——JavaEE  Hibernate修改数据

hibernate flush与update区别

l update操作的是在*态或脱管状态(detached,因为session关闭而处于脱管的状态)。

l flush操作则必须要求对象在持久态(persistent).

默认情况下一个持久态(persistent)对象的修改是不需要手动调用update,方法的,只要改了对象的值,那么在session关闭时,会自动调用flush对已经修改的持久态(persistent)对象进行update

l Hibernate中用get方法得到一个对象,并对这个对象进行修改,如果不打开事务是不会自动对这个对象进行保存,就是调用flush方法也不会进行保存。