Hibernate ORM架構——綜合

來源:互聯網
上載者:User

標籤:計算   懶載入   ***   串連   inverse   set   property   update   匯入   

換一個串連資料mySql資料庫的項目:HibernateStudy_cascade_inverse_query**********1.支援sql server需要的設定*******************************************************    a):驅動jar的處理-->匯入sqljdbc42.jar串連資料庫驅動    b):修改hibernate.cfg.xml中配置相關的串連,方言        <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>        <property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=demo</property>        <property name="connection.username">sa</property>        <property name="connection.password"></property>        <property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property>    c):開啟TCP/IP的支援-->電腦管理,服務和應用程式,SQL Server組態管理員,SQL Native Cloient 10.0配置,用戶端協議     d):啟動sql server的服務    **********2.關聯資料的處理****************************************************************關聯資料的插入,更新(修改),刪除的順序    假定A是主表,B是子表    create table A    (        aid varchar2(255 char) not null,        primary key(aid)    )    create table B    (        bid varchar2(255 char) not null,        primary key(bid),        raid foreign key(aid) references A   //外鍵    )在MySQL資料庫層面***************************************    a)insert(添加操作) :        先主表,後從(子)表    b)update(更新)(我們一般是不更新表的主鍵)        在資料庫層面來看,如果不考慮更新主鍵,順序是無關緊要的。    c)delete(刪除)        先刪從表(子表)的,然後再刪主表在hibernate代碼層面*************************************關聯資料如果MySQL的代碼和自己預想中的有出入,如何處理,需考慮的點。    1.考慮調用session對象的save,update,delete的順序問題    2.考慮在代碼層面有沒有設定關係,外鍵是否允許為null    3.考慮對象此時的狀態    協助判斷工具:sql server的監聽器**********3.cascade(級聯)************************************************************* **********4.inverse(確定關係維護方)******************************************************關係維護,本質就是誰負責處理外鍵列的值。inserse 一般是出現的對應檔的set元素裡面因為出現在set裡面,也就是出現主表的對應檔中如果把inserse設定為true,就表示由對方,也就是子表來維護關係(就不會繼續進行修改操作,而此時查表時的外索引值也為空白),主的一方不管。-->在添加子表的時候,相關聯的主表就跟著添加了一般預設inserse的值為true,即為自己就是維護關係方,會進行修改(更新)操作所以一般來說永遠交給子表來維護關係,是比較合理的(比如:一個應屆生,他並不屬於任何部門,那麼在這個應屆生中存在兩張表,一張是個人的資訊表,一張是部門表。在個人資訊表中的所屬部門可以為空白,等到該應屆生,正式成為某某部門的時候,才不為空白。也同時說明,外鍵一般時可以為空白的)**********5.關聯資料的查詢形式(檢索策略)****************************************************關聯資料的載入,有3種情況1.延遲(lazy)也叫作懶載入:    當只在尋找班級資料後,馬上調用session.close();那麼久預設為延遲(lazy)載入。即後面還沒有尋找完的語句就不尋找了    預設:lazy="true"    2.勤載入(eager)    當只在尋找班級資料後,馬上調用session.close();而後面還沒有尋找完的語句就系統仍然自動尋找,稱為勤載入(eager)    lazy="false"如在學生這邊加,在查詢學生資訊的同時也查詢班級資訊是正常的    3.外鍵載入(明確式載入):    outer-join="true":查詢的SQL語句中只用左外串連顯示出一條查詢結果    避免普通查詢,兩張表,則需要發送兩條select語句。


/*以上個人整理筆記,如果有誤或者有不懂的地方,歡迎評論與指出*/

Hibernate ORM架構——綜合

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.