Hibernate使用注意事項

來源:互聯網
上載者:User

標籤:man   collect   插入   ring   關閉   有助於   false   編寫   多對多   

映射的POJO類型中如果有基本類型最好都是用封裝類來代替;

注意關聯關係的正確設定,一對一(主鍵方式、外鍵外鍵方式),一對多和多對多的配置,單向、雙向的配置;

更新核心設定檔的mapping:如果是在hibernate.cfg.xml中以匯入對應檔的方式配置的話,注意在增加了新的domain類之後要將新的映射設定檔加入進去;

注意hibernate管理的對象的狀態:是瞬時態還是託管態?有時候事務結束了之後還去讀代理對象的值,這個時候設定了消極式載入的話會報錯的;

注意在一對多主鍵級聯操作的時候外鍵為NOT NULL可能會引發違例操作,這就和hibernate執行sql語句有關了;

在一對多關聯中,常把多的一方作為主動關聯方,由它去維護關聯關係;也就是將many的一方inverse=false,而且這樣也有助於改善效能;維護關聯關係體現在將對方的引用設定到自己的屬性當中;

盡量少用多對多關聯(可以用多個一對多關聯來來代替多對多關聯);

多對多注意設定消極式載入,避免無謂的效能開銷;

多對多關係中由於關聯關係是兩張表相互引用,因此在儲存關聯狀態時必須雙方同時儲存,體現在二者互相設定對方的引用;

一對多關聯性的維護可以是雙方都維護,也可以是由一方維護,但是多對多中僅且僅有一方維護關係(也就是inverse的設定);

在一個session中對同一個id最多只能有一個與之對應的瞬時態對象

在修改或這個刪除的時候最好都是先查出要修改的對象,再進行操作,這樣可以避免原來的關聯關係;

通過引用查詢可以不在代碼中出現HQL/SQL語句;

對Action中對託管態對象的修改由於事務已經關閉而不會同步到資料庫中;

避免查詢時的SQL語句的N+1問題;

在需要的時候可以將消極式載入設定為false,在class標籤中,這樣在Session關了之後依然可以使用關聯對象;

在編寫POJO的時候,必須使用JDK的介面,而不應該使用JDK Collection的實作類別,因為Hibernate返回的Set是Hibernate對Set介面的特定實現,因而會造成強轉錯誤;

屬性的消極式載入可以在<property>標籤中設定,但是要對類進行加強;

Hibernate的內部緩衝機制可能造成進行大量插入操作的時候OutOfMemory:可以每隔一段時間清空一次緩衝;二是可以在核心設定檔的<session-factory>標籤中加入<property name="hibernate.jdbc.batch_size">25</property>來進行批量插入;

hibernate中分頁操作的實現;

hibenate的長對話session實現在web項目可以用Spring提供的OpenSessoinInView實現;

 

有問題歡迎相互探討!

Hibernate使用注意事項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.