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

博为峰小博老师:

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

}

}

数据更改前:

006zipb5zy77J5aP6Bi48&690

数据更改后:

006zipb5zy77J5c6rk5f9&690

hibernate flush与update区别

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

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

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

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

转载于:https://my.oschina.net/u/2971691/blog/818750

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值