Hibernate學習筆記(二)

2021-09-09 05:55:38 字數 2627 閱讀 8095

目錄

一 、主鍵的分類

二 、主鍵的生成策略

三 、持久化類的三種狀態

四 、一級快取

五 、事務管理

(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...