Java commit()_java – Hibernate中的transaction.commit()是什么?

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的新手,所以请帮我理解.

我正在使用hibernate 4.

更新:

如果我调用transaction.commit(),那么结果有这一行

Hibernate: update account set balance=? where id=?

数据库也更新了.

这是否意味着没有调用transaction.commit()一切都只在实例级别完成,而不会真正更改数据库?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值