1. 程式人生 > >Hibernate 控制反轉(Inverse 詳解)

Hibernate 控制反轉(Inverse 詳解)

接觸Hibernate已經很久了,一直在copy程式碼,從來沒有進行過具體分析配置的引數

何為控制反轉, 比如 Poeple(人) 和 Address(地址)  :一個人可以擁有多個地址,那麼在配置的時候 在Poeple.hbm,xml 中 設定 one-To-Many (先不考慮Address配置檔案) 那麼Ok 當我們向People物件 新增 新的地址時  呼叫程式碼 

People p = new People(“王三”);

Address address = new Address("公司地址");

 p.getAddress().add(address) ;

save(p);

save(address);

當我們檢視 控制檯輸出的語句會發現  有兩個insert 語句 和一個 update 語句  顯然這是非常消耗效能的 ,正確的應該是 只有兩個 insert 

現在我們分析下 hibernate 的操作 先儲存了People 之後 儲存了 Address 最後又修改了 Address 的 關聯的peopleId 外來鍵屬性 這是由於Address 的外來鍵值是由Poeple來控制的

現在我們在People 的 配置檔案中 加上 inverse="true" 在執行上訴步驟 會發現 只有兩條Insert 語句

相關推薦

Hibernate 控制反轉(Inverse )

接觸Hibernate已經很久了,一直在copy程式碼,從來沒有進行過具體分析配置的引數 何為控制反轉, 比如 Poeple(人) 和 Address(地址)  :一個人可以擁有多個地址,那麼在配置的時候 在Poeple.hbm,xml 中 設定 one-To-Many (

hibernate中 cascade屬性

-m hibernate 發現 執行效率 pda 不一定 () 程序執行效率 刪除 配置關聯時,我們考慮兩點:程序執行效率和實際業務需要,前面的例子中無論是單向的關聯還是雙向的關聯,我們都要分別對實體類使用session.save()才能將數據保存至數據庫。問題:如果

Chrome控制臺使用

計時 size 你好 不用 結果 left kit all 連接 Chrome控制臺使用詳解 轉自 http://www.codeceo.com/article/chrome-console.html Chrome的開發者工具已經強大到沒朋友的地步了,特別是其功能豐富界

Hibernate(四) - HQL_QBC查詢--抓取策略優化機制

load i++ lec for 簡單的 測試類 domain 字符 main.c Hibernate 的查詢方式   在 Hibernate 中提供了很多種的查詢的方式。Hibernate 共提供了五種查詢方式。 1、Hibernate 的查詢方式:OID 查詢   OI

Hibernate - HQL物件檢索

Hibernate 提供了以下幾種檢索物件的方式: 導航物件圖檢索方式: 根據已經載入的物件導航到其他物件 OID 檢索方式: 按照物件的 OID 來檢索物件 HQL 檢索方式: 使用面向物件的 HQL 查詢語言 QBC 檢索方式: 使用 QBC(Query

Hibernate註解的使用

1、配置對映關係的xml方式         我們知道,Hibernate是一個典型的ORM框架,用以解決物件和關係的不匹配。其思想就是將關係資料庫中表的記錄對映成為物件,以物件形式展現,這樣一來,就可以把對資料庫的操作轉化為對物件的操作。  

分享知識-快樂自己:Hibernate框架常用API

1):Configuration配置物件 Configuration用於載入配置檔案。 1): 呼叫configure()方法,載入src下的hibernate.cfg.xml檔案     Configuration conf = new Configuration().configure(); 2)

Java程式設計師從笨鳥到菜鳥之(五十三)細談Hibernate(四)Hibernate常用配置檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java經典面試題:單鏈表反轉問題(含遞迴法)

java經典面試題:單鏈表反轉問題,有兩種方法,一種為迴圈遍歷法,一種遞迴法。 1、迴圈遍歷法   首先設定三個節點,把當前節點的下一節點指向它前面的節點,此時你會發現指標鏈會斷,所以要先把它後面一個節點用nextNode儲存下來,之後把節點向後移動遍歷即可。    程式碼如下: //

Hibernate與Mybatis的區別

1. hibernate是全自動,而mybatis是半自動 hibernate完全可以通過物件關係模型實現對資料庫的操作,擁有完整的JavaBean物件與資料庫的對映結構來自動生成sql。而mybatis僅有基本的欄位對映,物件資料以及物件實際關係仍然

web前端學習(四)JavaScript學習筆記部分(7)-- JavaScript DOM物件控制HTML元素

1、方法 getElementsByName() 獲取name 可以獲取一個數組型別資料(引數加引號) getElementsByTagName() 獲取元素   getAttribute()

Hibernate的常用API

Hibernate的常用API詳解 一、Configuration配置物件 Configuration:載入配置檔案 1.1 呼叫configure()方法,載入src下的hibernate.cfg.xml檔案 Configuration conf = new Configu

Android開發之基本控制元件和四種佈局方式

Android中的控制元件的使用方式和iOS中控制元件的使用方式基本相同,都是事件驅動。給控制元件新增事件也有介面回撥和委託代理的方式。今天這篇部落格就總結一下Android中常用的基本控制元件以及佈局方式。說到佈局方式Android和iOS還是區別挺大的,在iOS中有F

連結串列反轉方法(含實現程式碼)

怎麼反轉連結串列呢?這個是面試中經常出現的一道題。一般在資料結構或者演算法的面試題中,儘量不使用額外的空間去實現,儘管現在的計算機空間很充足,但是面試考察的還是對於整體效能的考慮。 方法其實有很多,我們可以依次遍歷連結串列,然後依次使用頭插入的方法來達到目的。 其中有個簡單的方法,就是把連結串列的每個指標

IdentityServer4實戰 - 基於角色的許可權控制及Claim

原文: IdentityServer4實戰 - 基於角色的許可權控制及Claim詳解 一.前言 大家好,許久沒有更新部落格了,最近從重慶來到了成都,換了個工作環境,前面都比較忙沒有什麼時間,這次趁著清明假期有時間,又可以分享一些知識給大家。在QQ群裡有許多人都問過IdentityServer4怎麼用Rol

Android開發的之基本控制元件和四種佈局方式

Android中的控制元件的使用方式和iOS中控制元件的使用方式基本相同,都是事件驅動。給控制元件新增事件也有介面回撥和委託代理的方式。今天這篇部落格就總結一下Android中常用的基本控制元件以及佈局方式。說到佈局方式Android和iOS還是區別挺大的,在iOS中有Frame絕對佈局和AutoL

android開發之wheel控制元件使用

出門在外生不起病呀,隨便兩盒藥60多塊錢。好吧,不廢話了,今天我們來看看wheel控制元件的使用,這是GitHub上的一個開源控制元件,用起來十分方便,我們可以用它做許多事情,比如做一個自定義的datepicker,在一些電商App中,經常用它來做省市縣三級聯動,總之用途還是

[C++] 訪問控制與繼承

  1、 訪問控制中有三種角色:基類及其友元,派生類,類使用者(物件); 訪問說明符分為public/protected/private,類的成員也相應的分為了3種。   2、 訪問說明符又分為兩種:一個是基類中的成員訪問說明符;另一個是派生類派生列表中的

Hibernate配置各種資料來源

Hibernate的描述檔案可以是一個properties屬性檔案,也可以是一個xml檔案。下面講一下Hibernate.cfg.xml的配置。配置格式如下: 1. 配置資料來源 在Hibernate.cfg.xml中既可以配置JDBC,也可以配置JNDI。在本小