Was ist die Transaktion.commit() in den Ruhezustand?
Was bedeutet Transaktion.commit() tun?
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());
Gibt mir das Ergebnis:
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
Da ich aber nicht nennen Transaktion.commit() es gab keine änderung in der Datenbank.
Dies bedeutet alles, was getan wurde, nur auf manche Instanzen/Objekte, ohne Sie wirklich ändern die Datenbank?
Ich bin neu in den Ruhezustand, so bitte helfen Sie mir zu verstehen.
Ich bin mit hibernate 4.
UPDATE:
WENN ich rufe, Transaktion.commit() dann ist das Ergebnis dieser Zeile
Hibernate: update account set balance=? where id=?
Und die Datenbank ebenfalls aktualisiert.
Bedeutet dies, dass ohne Aufruf Transaktion.commit() alles getan wurde, nur auf Instanz-Ebene, ohne Sie wirklich ändern die Datenbank?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Begehen wird die Datenbank-commit. Die änderungen an persistenten Objekten werden in der Datenbank geschrieben.
Spülung ist der Prozess der synchronisieren der zugrunde liegenden beständigen
store mit persistenten Zustand im Speicher gehalten.
dh. es wird update-oder insert-in den Tabellen in der Ausführung
Transaktion, aber es kann nicht diese änderungen (dies hängt davon ab,
Ihre flush-Modus).
Wenn Sie ein persistentes Objekt und ändern Sie eine
Wert auf, wird es schmutzig und hibernate muss bündig diese
änderungen der Persistenz-Schicht. Kann es dies automatisch, für
oder Sie können müssen, um dies manuell zu tun, das hängt von Ihrem flush
Modus(auto oder manuell) 🙂
Also kurz: Transaktion.commit() bündig die Sitzung, sondern es endet auch die Einheit der Arbeit.
Gibt es eine ähnliche Referenz zu Ihrem problem hier
Weitere Referenz
Wie teuer ist das Begehen einer hibernate-Transaktion?