目錄
一 、主鍵的分類
二 、主鍵的生成策略
三 、持久化類的三種狀態
四 、一級快取
五 、事務管理
(1)、自然主鍵:以表中的乙個字段為主鍵
increment :hibernate 中提供的自動增長機制 ,由hibernate傳送語句從資料庫中查出主鍵的最大值(每個session只查1 次),以 該值為基礎,每次增量+1,在記憶體中生成主鍵,在單執行緒中使用,適用於 short 、int 、long 型別的主 鍵。
identity :適用於 short 、int 、long 型別的主鍵。使用的是資料庫底層的自動增長機制 ,因此適用於有自動增長機制的數 據 庫(mysql),不適用於oracle,因為oracle沒有自動增長 ,是採用序列的方式 。
sequence :適用於 short 、int 、long 型別的主鍵。採用的是序列的方式,適用於oracle ,不適用於mysql
uuid :隨機生成字串型別的主鍵
native :根據使用的資料庫自行判斷採用identity、sequence其中一種作為主鍵生成方式
assigned :hibernate不負責維護主鍵生成,需要手動設定
在對映配置檔案中設定主鍵的生成策略,**如下 :
<?xml version="1.0" encoding="utf-8"?>
//全路徑+類名稱 , 資料庫表名稱
1 、瞬時態:此物件沒有唯一的標識 id ,沒有被 session 管理 ,稱為瞬時態物件
2 、持久態:此物件有唯一標識 id ,並且被 session 管理 ,稱為持久態物件
3 、脫管態:此物件有唯一標識 id ,但沒有被 session 管理 ,稱為脫管態物件
public void demo()
hibernate中的一級快取,也叫做session的快取,它可以在session範圍內減少資料庫的訪問次數,當執行一次查詢操作的時候,執行第二次查詢操作,先檢查快取中是否有資料,如果有資料就不查詢資料庫,直接從快取中獲取資料。
一級快取只在session範圍內有效,session關閉,一級快取失敗。
session的快取是由hibernate維護的,使用者不能操作快取內容;如果想操作快取內容,必須通過hibernate提供的 evict / clear方法操作
備註 :不同的session不會共享快取資料
1 、事務概述:事務就是指作為單個邏輯工作單元執行的一組資料操作,這些操作要麼必須全部成功,要麼必須全部失敗,以保證資料的一致性和完整性。
2 、事務屬性:
如果不考慮隔離性,會引發的安全性問題如下:
4 、為了解決多個事務併發會引發的問題 ,應該設定事務的隔離級別 :
5 、在hibernate的配置檔案中設定隔離級別。每一種隔離級別對應著乙個正整數。
在hibernate.cfg.xml中設定隔離級別**如下:
4
6 、執行緒繫結的 session :保證業務邏輯層與資料持久層是同乙個事務連線物件
(1) 、在hibernate核心配置檔案中配置 session物件與本地執行緒進行繫結。
thread
(2)、編寫工具類 hibernateutils
package czm.hibernate.utils;
import org.hibernate.session;
import org.hibernate.sessionfactory;
import org.hibernate.cfg.configuration;
public class hibernateutils
public static session opensession()
public static session getcurrentsession()
}
(3) 、 編寫測試類
public void testdemo()
注意 :繫結了本地執行緒的session是不用我們自己去關閉的!!!當本地執行緒被關閉後,session也就自然而然的被關閉了。如果我們的sesson是沒有與本地執行緒繫結的,是通過sessionfactory.opensession()獲取的,那麼就要我們自己手動進行關閉。 學習hibernate筆記
1.首先要配置hibernate.xml 配置檔案,然後建立每個實體類的對映檔案 x.hbm.xml。2.準備工作做好之後,在寫測試類時先要拿到configuration cfg org.cfg.configuration 用來讀配置檔案的 然後通過cfg.configur返回乙個 找到配置檔案自身...
Hibernate學習筆記
什麼是orm呢?orm是一種思想 orm關注是物件與資料庫中的列的關係 什麼是hibernate?hibernate是乙個物件關係對映框架,它將pojo與資料庫表建立對映關係,自動生成sql語句,自動執行。hibernate的核心api 一共有6個,分別為 session sessionfactor...
學習hibernate筆記
exception in thread main org.hibernate.service.spi.serviceexception unable to create requested service org.hibernate.engine.jdbc.env.spi.jdbcenvironme...