一、持久化類概述 就是一個JavaBean,這個JavaBean與表建立了映射關係。這個類就稱為是持久化類。 簡單理解為 持久化類=JavaBean+映射文件。 持久化類:是指其實例需要被Hibernate持久化到資料庫中的類。持久化類符合JavaBean的規範,包含一些屬性,以及與之對應的getX ...
一、持久化類概述
就是一個JavaBean,這個JavaBean與表建立了映射關係。這個類就稱為是持久化類。
簡單理解為 持久化類=JavaBean+映射文件。
持久化類:是指其實例需要被Hibernate持久化到資料庫中的類。持久化類符合JavaBean的規範,包含一些屬性,以及與之對應的getXXX()和setXXX()方法。
二、持久化類的編寫規範
l 需要提供無參數的構造方法。
l 類的屬性需要私有,對私有的屬性提供public的get和set方法。
l 提供一個唯一標識(OID)的屬性與表的主鍵對應。
Java裡面使用地址區分是否是同一個對象。資料庫中是通過主鍵區分是否是同一個記錄。Hibernate通過唯一標識區分是否在記憶體中是同一個對象。
l 類不要使用final修飾。
l 類中的屬性儘量使用包裝類類型。
建議實現序列化介面
三、持久化類的三種狀態
3.1 瞬時態(Transient Object)
瞬時態:持久化對象沒有持久化標識OID,對象沒有被Session管理。
3.2 持久態(Persistent Object)
持久態:持久化對象有持久化標識OID,對象被Session管理。
3.3 脫管態(Detached Object)
脫管態:持久化對象有持久化標識OID,對象沒有被Session管理。
3.4 三種狀態的轉換
【瞬時態】
獲得瞬時態:
* Customer c = new Customer();
瞬時態對象轉持久態:
* session.save(c); session.saveOrUpdate(c);
瞬時態對象轉脫管態:
* c.setCust_id(1l);
【持久態】
獲得持久態:
* session.get(),session.load()…;
持久態對象轉脫管態:
* session.close(),session.clear(),session.evict(Object obj);
持久態對象轉瞬時態:
* session.delete();
【脫管態】
獲得脫管態:
Customer c = new Customer(); c.setCust_id(1l);
脫管態對象轉持久態
* session.update(); session.saveOrUpdate();
脫管態對象轉瞬時態
* c.setCust_id(null);