Cosa fa transaction.commit() fare?Che cosa è 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());
Questo mi dà risultati:
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
Ma dal momento che non ho chiamato transaction.commit() non v'è stato alcun cambiamento nel database.
Ciò significa che tutto è stato eseguito solo su alcune istanze/oggetti senza realmente modificare il database?
Sono nuovo di Hibernate, quindi per favore aiutami a capire. Sto usando hibernate 4.
UPDATE:
se chiamo transaction.commit() allora il risultato avere questa linea
Hibernate: update account set balance=? where id=?
E Database anche aggiornato.
Ciò significa che senza chiamare lo transaction.commit() tutto è stato eseguito solo a livello di istanza senza realmente modificare il database?