hibernate框架學習之持久化對象OID
持久化對象唯一標識——OID
1)數據庫中使用主鍵可以區分兩個對象是否相同
2)Java語言中使用對象的內存地址區分對象是否相同
3)Hibernate中使用OID區分對象是否相同
Hibernate認為每一個不同的對象應該具有一個唯一的標識,稱這個標識為OID;
為了使數據模型與數據庫表一樣使用主鍵來進行數據的區分,在數據模型類中聲明唯一標識(uuid),作為Hibernate管理對象的唯一標識,並使用該標識與數據庫表中的主鍵進行一一對應;
為配合後期框架的使用,還使用該標識設定Java對象區分的規則,即參照此屬性生成hashCode與equals方法。
OID的選取規則
1)Java對象中可以使用任意屬性作為OID,為什麽要使用uuid作為唯一標識
2)自然主鍵:具有業務含義
例如個人信息中的身份證號,不僅是唯一的,而且還具有業務含義,這種屬性雖然可以做為OID,但是其具有一定的業務含義。選擇OID盡量避免使用具有業務含義的屬性
3)代理主鍵:不具有業務含義
聲明一個不具有任何業務含義的屬性,僅用於區分對象,這種屬性即便暴漏給最終用戶查看,也不具有安全隱患
4)OID選擇應盡量避免使用自然主鍵,改用代理主鍵
hibernate框架學習之持久化對象OID
相關推薦
hibernate框架學習之持久化對象OID
進行 主鍵 color java對象 一定的 使用 安全 查看 內存 持久化對象唯一標識——OID 1)數據庫中使用主鍵可以區分兩個對象是否相同2)Java語言中使用對象的內存地址區分對象是否相同3)Hibernate中使用OID區分對象是否相同Hibernate認為每一個
hibernate框架學習之對象狀態
color 如何 由於 創建 技術分享 不同的 有一個 get ges Hibernate對象共有三種狀態瞬時狀態:瞬時對象持久化狀態:持久化對象托管狀態:托管對象瞬時對象(Transient Object),簡稱TO瞬時對象指的是應用程序創建出來的對象,並且未受到Hibe
Java學習之面向對象一
.cn this 關鍵字 裝機 實現 run 運行 變量 方法 1 面向對象 1.1 理解什麽是面向過程、面向對象 面向過程與面向對象都是我們編程中,編寫程序的一種思維方式。 l 面向過程的程序設計方式,是遇到一件事時,思考“我該怎麽做”,然後一步步實現的過程。
java學習之面向對象的四個特性
修改 行為 per 具體化 建立 編譯器 版本 自動 fin 對象:由行為、狀態和唯一標誌組成。 一 抽象 抽象是忽略一個主題中與當前目標無關的方面,把現實世界中的概念轉換為對象,可以是表示數據的VO對象或抽象類,也可以是表示一類行為的接口。有利於從眾多變化的狀態中抽
Java學習之面向對象四
性別 代碼塊 完整 權限 私有屬性 屬性 包含 get sets 1、構造方法的格式是什麽?有哪些註意事項? 權限修飾符 類名(參數列表){方法體} 註意事項: ? 構造方法沒有返回值類型。也不需要寫返回值。因為它是為構建對象的,對象創建完,方法就執行結束。 ? 構造方
Hibernate框架學習之註解配置關系映射
target 列名 獲取 fonts 查詢 conn unique strategy code ?????上篇文章我們通過註解對映射了單個實體類,但是具體項目中往往實體類之間又是相互關聯的,本篇文章就是從實體類之間存在的不同關聯角度,具體學習下如何映射他們之間的關聯,主要涉
Spring.NET依賴註入框架學習--註入對象常見方法
defaults bsp app actor res 代碼 -i ont 獲取 Spring.NET依賴註入框架學習---實例化容器常用方法 本篇學習實例化Spring.NET容器的倆種方式 1、通過XmlObjectFactory創建一個Spring.NET容器
Hibernate框架學習(七)——多對多關系
ber hiberna 保存 hibernate .com 表達 clas 持久 員工 一、關系表達 1、表中的表達 2、實體中的表達 3、orm元數據中的表達 在User.hbm.xml中添加: 在Role.hbm.xml中添加(與上相反):
Scala 學習之面向對象(3)
繼承 abstract 接口 var lar 創建 int 一個 per ==> 類 ---> 類的定義class Student{ // 定義屬性 private var stuName:String = "Tom&qu
hibernate框架學習之使用SQLQuery查詢數據
sql語句 推薦 語法 list() 結果 字符 數據封裝 span 查詢 SQLQuery對象的獲取 Hibernate支持使用原生SQL語句進行查詢,通過session對象獲得SQLQuery對象進行,需要傳入SQL語句 SQLQuery createSQLQuer
hibernate框架學習之核心API
需要 action pan 獨立 configure 出現 定義 ets 屬性 ConfigurationSessionFactorySessionTransactionQueryCriteria Configuration Configuration對象用於封裝Hiber
hibernate框架學習之核心配置文件
encoding driver user pool prope jdbc nat false form hibernate.cfg.xml <?xml version=‘1.0‘ encoding=‘utf-8‘?> <!DOCTYPE hibernat
hibernate框架學習之數據模型-POJO
標識 生成 基本數據類型 自動生成 構造 開發 避免 如果 修飾 Hibernate數據模型用於封裝數據,開發時候需要遵從如下規範:1)提供公共無參的構造方法(可使用自動生成的)如果使用投影技術,一定要顯式聲明公共無參的構造方法2)提供一個標識屬性,作為對象的主鍵,映射數據
hibernate框架學習之數據查詢(QBC)helloworld
string bsp eal ssi alink ger -- sim ali package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Criteria; import o
hibernate框架學習之一級緩存
commit 任務 功能區 出了 運行 發生 快照 class 可以關閉 l緩存是存儲數據的臨時空間,減少從數據庫中查詢數據的次數lHibernate中提供有兩種緩存機制?一級緩存(Hibernate自身攜帶)?二級緩存(使用外部技術)lHibernate的一級緩存即Hib
hibernate框架學習之數據查詢(HQL)
-c skill fir 方式 行數據 del 表數據 ber 描述 lHibernate共提供5種查詢方式?OID數據查詢方式?HQL數據查詢方式?QBC數據查詢方式?本地SQL查詢方式?OGN數據查詢方式OID數據查詢方式l前提:已經獲取到了對象的OIDl查詢:基於OI
hibernate框架學習之數據查詢(HQL)helloworld
args 配置 老師 框架 sets 測試 () eat med package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Ses
hibernate框架學習之多表查詢helloworld
nat student 查詢 get span bsp object from ber package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hi
python學習之面向對象程序設計的一些思考
函數 對象 程序 以及 有時 使用實例 狀態 情況 讓其 將屬於一類的對象放在一起: 如果一個函數操縱一個全局變量,那麽兩者最好都在類內作為特性和方法實現。 不要讓對象過於親密: 方法應該只關心自己實例的特性,讓其他實例管理自己的狀態。 簡單就好:
hibernate框架學習筆記4:主鍵生成策略、對象狀態
alt rri gen 線程安全 理論 微軟 unit conf lose 創建一個實體類: package domain; public class Customer { private Long cust_id; private Stri