Hibernate之OID


在關系數據庫中,主鍵用來識別記錄,並保證每天記錄的唯一性。在Java語言中,通過比較兩個變量所引用對象的內存地址是否相同,或者比較兩變量引用的對象是否相等。Hibernate為了解決兩者之間的不同,使用對象標識符(OID)來標識對象的唯一性OID是關系數據庫中主鍵在Java對象模型中的等價物。在運行時,Hibernate根據OID來維持Java對象和數據庫中的對應關系。如下所示:
Transaction tx = session.beginTransaction();
User user1 = (User)session.load(User.class,new Long(1));
User user2 = (User)session.load(User.class,new Long(1));
User user3 = (User)session.load(User.class,new Long(3));
應用程序在執行上述代碼時,第一次OID為1的對象,從數據庫中查找ID為1的記錄,然后創建想要的User實例,並把它保存到session的緩存中,最后將該實例的引用賦值給變量user1,第二次加載OID為1的對象時,直接把session緩存中的OID為1的實例的引用賦值給user2,因此user1=user2的結果為true


hibernate的對象標識符(OID)
 可以用<id>元素來設定OID,OID可以定義為short,int,long類型,默認情況下,hibernate生成持久類時,會將OID定義為java包裝類型
  用ID元素中的<generator>子元素來設定標識符生成器,例如:
  <id type="long" column="id">
     <generator />
  </id>
  以下是hibernate提供的內置標識符生成器:
  1.increment
  2.identity
  3.sequence
  4.hilo
  5.native
  6.uuid
  7.assigned


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM