Hibernate 延遲加載的代理模式 和 Spring AOP的代理模式

Hibernate 延遲加載的代理模式 和 Spring AOP的代理模式程序員

主題數據庫

概念工具

Hibernate 延遲加載的代理模式性能

Spring AOP的代理模式spa

區別和聯繫代理

靜態代理和動態代理日誌

 

概念對象

代理模式是爲其餘對象提供一種代理以控制對這個對象的訪問。事務

Hibernate 延遲加載的代理模式內存

Hibernate 延遲加載中用到了代理模式:從數據庫中得到數據初始化持久化實體對象時,不加載實體對象的集合屬性的相關數據,直到系統須要集合屬性的數據時,才從數據庫中獲取相關記錄並賦值給集合屬性。

Hibernate 延遲加載使用代理模式的意義:若是集合屬性關聯的記錄成百萬記,在初始化持久化實體對象時就加載集合屬性會有很大的內存開銷,形成性能降低。因此選擇延遲加載,須要時再從數據庫中獲取集合屬性關聯的記錄,以減小內存開銷,提升性能。

 

Spring AOP的代理模式

Spring AOP中用到了代理模式:AOP動態代理。AOP代理能夠替代目標對象,代理對象中包含了目標對象的全部方法,可是代理對象在對應的目標對象方法執行代碼先後加了一些通用功能的代碼,好比日誌記錄,權限檢查,事務管理等等。

Spring AOP使用代理的意義:代理對象加強了目標對象的功能。

 

區別和聯繫

Hibernate的延遲加載和Spring的AOP都體現了代理模式,可是使用場景不同,即便用代理的目的不同。Hibernate延遲加載是爲了減小系統開銷,出於性能考慮;Spring AOP是爲了增長目標類的功能,代理類就是在目標類方法的執行代碼先後加上一些代碼以增長通用功能。

 

靜態代理和動態代理

靜態代理:由程序員建立或特定工具自動生成源代碼,再對其編譯。在程序運行前,代理類的.class文件就已經存在了。

動態代理:在程序運行期間,經過反射機制動態生成代理類。

相關文章
相關標籤/搜索