transaction.commit() làm gì?Transaction.commit() trong Hibernate là gì?
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());
này mang lại cho tôi kết quả:
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
Nhưng kể từ khi tôi đã không gọi transaction.commit() không có sự thay đổi trong cơ sở dữ liệu.
Điều này có nghĩa là mọi thứ chỉ được thực hiện trên một số cá thể/đối tượng mà không thực sự thay đổi Cơ sở dữ liệu?
Tôi mới dùng Hibernate, vì vậy hãy giúp tôi hiểu. Tôi đang sử dụng chế độ ngủ đông 4.
UPDATE:
NẾU tôi gọi transaction.commit() thì kết quả có dòng này
Hibernate: update account set balance=? where id=?
Và Cơ sở dữ liệu cũng được cập nhật.
Điều này có nghĩa là không cần gọi transaction.commit() mọi thứ chỉ được thực hiện trên cấp độ thể hiện mà không thực sự thay đổi Cơ sở dữ liệu?