Hibernate 筆記
Hibernate 筆記
開始之前要有的觀念
Configuration
主要用於啟動、載入和管理 Hibernate的配置文件,創建完 Session 之後聲明週期應該要被拋棄
如果設定檔放在專案的根目錄的話 StandardServiceRegistryBuilder
會自動處理
SessionFactory
用於 Hibernate 的初始化和建立 Session 對象,這個是工廠模式的做法
他是線程安全的,因此可以被多線程使用,但是他是重量級的,因此一般來說一個專案只需要一個 SessionFactory 就好了。
SessionFactory 會做以下幾件事情:
- 解析設定
- 建立 connection pool
- 建立 Mapping
- 如果有啟用的話會建立Second-Level Cache
session
他會為 Hibernate 提供 DB 的 CRUD 入口,SessionFactory 會提供建立獲取生成 session 的方法。
session 有以下幾個特點:
- 非線程安全,不可以多線程共用
- 輕量級,可以多次建立和用完即丟
- session 有一級緩存
Transaction
交易控制,從 session 的 beginTransaction 取得
有 commit 和 rollback 方法提供 commit 和 rollback
透過 properties 設定
建立entity
@GeneratedValue
說明
可以使用 @GeneratedValue(strategy = GenerationType.AUTO)
來設定,其中 GenerationType
是 enum,可以用來選擇不同生成的策略
- AUTO: 這是預設值,會根據 DB 判斷最適合的策略
- TABLE: 使用一個特定的 table 來保存主鍵,根據官方資料,此做法效能不好,如果用這個的話需要使用 generator 指定 table
- SEQUENCE: 根據DB 的序列生成主鍵,前提是 DB 要支援
- IDENTITY: 由 DB 生成,通常用於自動增長
- UUID: 生成 UUID 會比較佔空間一點,但好處是與資料庫無關
建立連線
透過 Hibernate 提供的方法做 CRUD
HQL 語句
HQL 語句 | 說明 |
---|---|
count | 同 SQL |
sum | 同 SQL |
avg | 同 SQL |
max | 同 SQL |
min | 同 SQL |
留言
張貼留言