javaEE 之 Hibernate 基礎講解

2021-08-18 11:28:17 字數 2975 閱讀 9941

提供無參構造方法

成員變數私有化 提供get/set方法

基本資料型別盡量使用包裝型別(可以多表示乙個值null 例如考試分數 缺考和0分)

實體中必須要提供乙個與表中的主鍵對應的屬性id

hibernate是通過主鍵來區別物件是否相同

不要使用final修飾實體類(**物件是要繼承該類的)

自然主鍵

業務邏輯中本身存在的不能重複的字段設為主鍵

**主鍵(常用)

自定義乙個和業務本身沒有關係的字段 設為主鍵

一般我們這樣定義

< generator class=」native」> < /generator>

還可以使用以下幾種主鍵生成策略

identity:主鍵自增 由資料庫來維護主鍵 錄入的時候不需要指定主鍵

increment:主鍵自增 由hibernate來維護主鍵 每次插入前會先查詢表中 id最大值 +1 作為新主鍵 效率不高 每次都要查詢 如何10個人同時要儲存 可能會出現執行緒問題

sequence:oracle中的主鍵生成策略 序列

hilo:高低位演算法(資料庫中的主鍵自增演算法原理) 由hibernate來維護主鍵

native:hilo + sequence + identity 自動三選一 檢測你是什麼資料庫

1.瞬時態 沒有id 沒有和session關聯

2. 持久態 有id 有關聯

3. 游離態 有id 沒有關聯

**示例:

@test

public

void

fun5()

快取原理**:

快取測試:

@test

public

void

fun3()

// 這裡輸出 只輸出一條查詢語句 第二個輸出為true

// 根據上圖 原理 我們可以看出 第一次 hibernate 和 資料庫之間會產生關聯

// 並且在返回的結果集中 hibernate 將結果集封裝為乙個物件 存放在快取中

// 然後將快取返回給程式 當第二個語句執行的時候 hibernate 會去快取中根據id來查詢

// 發現匹配成功就直接返回快取中的物件 hibernate之所以會這樣寫 是為了提高程式的執行效率 和減少資源浪費

快照原理:

**示例:

@test

public

void

fun4()

// 這裡會輸出 一條查詢語句 和一條修改語句

// 首先我們修改的資料在什麼時候進行更改的 ! 是在commit的時候才會進行修改

// 那麼commit的時候系統會做什麼操作呢?

// 首先系統會根據id 判斷快取中的物件是否和快照一樣 不一樣會將快取中的資料更新到資料庫 一樣就不做操作

< property name=」hibernate.connection.isolation」>4< /property>

通過hibernate 來設定事物的隔離級別

1.髒讀

2.可重複讀

3.幻讀

read uncommitted 讀未提交 123 1

read committed 讀已提交 23 2

repeatable read 可重複讀 3 4

serializable 序列化(只能乙個乙個訪問) 8

設定事物的隔離級別(etc檔案中)

隔離級別是用 1個位元組儲存的 0001 0010 0100 1000

hibernate.connection.isolation 1|2|4|8

需要在hibernate.cfg.xml 中設定才能實現

< property name=」hibernate.current_session_context_class」>thread< /property>

hql 查詢

@test

public

void

fun1()

問號?佔位符

@test

public

void

fun2()

冒號:佔位符

@test

public

void

fun3()

分頁查詢

@test

public

void

fun4()

無語局查詢

@test

public

void

fun6()

原生sql 查詢 返回的結果 跟物件沒有關係

@test

public

void

fun8()

transaction.commit();

session.close();

}

Java EE學習筆記之 繼承

子類不能同時繼承多個父類,但是子類可以多層繼承父類 舉個例子 class zu class fuextends zu class ziextends fu父類可以被多個子類繼承。子類有父類的的全部屬性和方法。public class demo02 class zu class fuextends z...

JavaEE之JDBC基礎使用

driver介面 資料庫驅動程式的介面,所有具體資料庫廠商需要的驅動程式需要實現次介面。connection connect string url,properties info 用於獲取資料庫連線 connection介面 與具體的資料庫的連線物件。statement createstatemen...

javaEE框架之Hibernate框架概述

一.什麼是框架?框架是軟體的半成品,已經幫你完成了部分功能 把一些不確定的東西,按框架要求,達成相應的功能 二.hibernate簡介 1.hibernate是什麼框架?1 是乙個開源的物件關係對映框架 2 對jdbc進行了非常輕量級的物件封裝 3 將pojo與資料庫表建立對映關係,是乙個全自動的o...