1. 程式人生 > >hibernate框架學習之持久化對象OID

hibernate框架學習之持久化對象OID

進行 主鍵 color java對象 一定的 使用 安全 查看 內存

持久化對象唯一標識——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