Was macht transaction.commit()?Was ist transaction.commit() in Hibernate?
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());
Das gibt mir führen:
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
Aber da ich nicht transaction.commit angerufen hat() gab es keine Veränderung in der Datenbank.
Bedeutet dies, dass alles nur für einige Instanzen/Objekte ausgeführt wurde, ohne die Datenbank wirklich zu ändern?
Ich bin neu in Hibernate, also bitte helfen Sie mir zu verstehen. Ich verwende Hibernate 4.
UPDATE:
IF I transaction.commit() aufrufen dann das Ergebnis haben diese Linie
Hibernate: update account set balance=? where id=?
Und Datenbank ebenfalls aktualisiert.
Bedeutet dies, dass ohne Aufruf transaction.commit() alles nur auf Instanzebene getan wurde, ohne wirklich die Datenbank zu ändern?