程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 如何使用Hibernate來管理事務

如何使用Hibernate來管理事務

編輯:關於JAVA

在數據庫應用程序中最基本的操作是CRUD(創建/讀取/更新/刪除),這4個操作構成了數據庫應用程序的基石。在單機時代,一個數據庫只由一個應用程序使用,這樣CRUD操作並不會帶來什麼負面影響,但當進入網絡時代後,這一切都發生了改變。由於網絡數據庫程序一般是由多個客戶端同時操作一個數據庫,因此,傳統的CRUD操作將變得不再安全。因此,這個問題將引出本文的中心內容:事務。通過事務可以使傳統的CRUD操作適應網絡數據庫應用。

本文分為三個部分。第一部分討論了Hibernate如何管理事務和會話。第二部分描述了Hibernate用於管理事務和會話的核心API。在第三部分將舉一個如何應用會話和事務的例子,並討論了ThreadLocal變量。

Hibernate中的會話和事務

所謂會話,就是一個客戶端從登錄服務器開始,到登出服務器為止,在這期間關於客戶端和服務器之間的所有活動。一個會話中可包含一個或多個事務,每一個事務是一原子操作,這個原子操作中可以包含多個操作,但這些操作是一個整體,要麼都成功,要麼都失敗。在討論Hibernate的會話和事務之前,讓我們先來了解一下事務在底層是如何工作的。在Java中的操作數據庫一般是和JDBC直接打交道,而JDBC則是直接通過Socket和數據庫打交道。我們所說的底層實際上就是指JDBC和數據庫層。

首先,讓我們來看看數據庫事務。數據庫的操作由很多CRUD操作集合組成。而每一個集合就是數據庫的一個事務。一個事務由begin transaction開始,最後以commit或rollback結束,這兩個事務結束語保證了這一組CRUD操作要麼都成功執行,要麼回到執行前的狀態。換句話說,這一組CRUD操作只要有一條語句執行失敗,整個組都將回滾。這麼做是為了保證數據的完整性。

如果事務中只有一個操作,那麼事務是否提交,只依賴於這個操作的成功或失敗。如一條INSERT語句,只有在這條語句成功執行後,數據才被真正寫到數據庫中。

現在讓我們來看看事務中包含多條CRUD語句的情況,如包含一條UPDATE語句和二條DELETE語句。在這種情況下,不管這三條語句哪一條執行失敗,整個事務都將回滾。

在使用事務時為了不產生負面影響,常常要對事務進行劃分,即將一個大的事務合理劃分成一些小的事務。這樣如果某一個事務回滾的話,就不用回滾所有操作了。至於將大事務劃分成多少個小的事務,這就要根據具體的情況而定。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved