java – Hibernate中的transaction.commit()是什么?
发布时间:2020-12-14 05:09:03 所属栏目:Java 来源:网络整理
导读:transaction.commit()做什么? Account account = new Account();account.setId(100);account = (Account) session.get(Account.class,account.getId());System.out.println("Before Transaction: Balance = " + account.getBalance());double preBal = acco
transaction.commit()做什么?
Account account = new Account(); account.setId(100); account = (Account) session.get(Account.class,account.getId()); System.out.println("Before Transaction: Balance = " + account.getBalance()); double preBal = account.getBalance(); account.setBalance(50000000); Transaction transaction = session.beginTransaction(); session.update(account); account = (Account) session.get(Account.class,account.getId()); System.out.println("After Transaction: Balance = " + account.getBalance()); // transaction.commit(); account = (Account) session.get(Account.class,account.getId()); System.out.println("Pev-Bal=" + preBal + " Curr-Bal=" + account.getBalance()); 这给我结果: Hibernate: select account0_.id as id0_1_,account0_.balance as .......... Before Transaction: Balance = 300.0 After Transaction: Balance = 5.0E7 Pev-Bal=300.0 Curr-Bal=5.0E7 但是由于我没有调用transaction.commit(),所以数据库没有变化. 这是否意味着一切都只在某些实例/对象上完成,而不会真正改变数据库? 我是Hibernate的新手,所以请帮我理解. 更新: 如果我调用transaction.commit(),那么结果有这一行 Hibernate: update account set balance=? where id=? 数据库也更新了. 这是否意味着没有调用transaction.commit()一切都只在实例级别完成,而不会真正更改数据库? 解决方法
提交将使数据库提交.持久对象的更改将写入数据库.
Flushing是同步底层持久化的过程 存储持久状态存储在内存中. 即.它将在运行中更新或插入到您的表中 事务,但它可能不会提交这些更改(这取决于 你的冲洗模式). 当你有一个持久的对象,你改变一个 所以简而言之:transaction.commit()会刷新会话,但它也会结束工作单元. 有一个类似的参考你的问题here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |