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が初めてなので、理解してください。ハイバネート4を使用しています。
アップデート:
transaction.commit()を呼び出すと、結果は次の行になります
Hibernate: update account set balance=? where id=?
また、データベースも更新されました。
これは、 transaction.commit()を呼び出すことなく、データベースを実際に変更することなく、すべてがインスタンス レベルでのみ行われたということですか?