首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Hibernate DML 操作记要

2012-12-25 
Hibernate DML 操作记录http://developer.51cto.com/art/200906/130045.htm?网上流传的很老的一段文字:红

Hibernate DML 操作记录

http://developer.51cto.com/art/200906/130045.htm

?

网上流传的很老的一段文字:


Hibernate DML 操作记要

红框标记的文字使用hibernate 源码来解释:

hibernate-3.6.0.final/core/src/main/java/org/hibernate/loader/Loader.java

?

请查看代码Loader.java 1341行代码:

?

?

?

举个例:

账户对象:Account.java

?

session.createQuery("update Account a set a.balance=? where a.id = ?").setParameter(0, -100).setParameter(1, 1)      .executeUpdate();
?

?

?

在AccountService中同一个事务中执行如下操作:

?

?

场景1?(1) Account account = getAccountById(1);
//更新编号1的余额
(2) updateAccountBalance();
//再次查询
(3)account = getAccountById(1);
此时account对象的余额是没有改变的,因为结果来自session缓存

?如果将Hibernate 中设置show_sql = true ,

(1)和(3)都会输入查询SQL,需注意是(3)虽然输出了SQL但数据并不是来自数据库。

?

?

?

场景2//更新编号1的余额
updateAccountBalance();
//再次查询?
Account account??= getAccountById(1);
此时account对象的余额是更新后的,因为结果来源数据库?

?

?

?

热点排行