最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Hibernate原理及應用

 更新時間:2017年02月14日 10:09:57   作者:格式化99  
本文主要介紹了Hibernate原理及應用。具有很好的參考價值,下面跟著小編一起來看下吧

Hibernate工作原理及為什么要用?

原理:

1.通過Configuration().configure();讀取并解析hibernate.cfg.xml配置文件

2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>讀取并解析映射信息

3.通過config.buildSessionFactory();//創(chuàng)建SessionFactory

4.sessionFactory.openSession();//打開Sesssion

5.session.beginTransaction();//創(chuàng)建事務Transation

6.persistent operate持久化操作

7.session.getTransaction().commit();//提交事務

8.關閉Session

9.關閉SesstionFactory

為什么要用:

1. 對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復性代碼。

2. Hibernate是一個基于JDBC的主流持久化框架,是一個優(yōu)秀的ORM實現(xiàn)。他很大程度的簡化DAO層的編碼工作

3. hibernate使用Java反射機制,而不是字節(jié)碼增強程序來實現(xiàn)透明性。

4. hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系數(shù)據(jù)庫,從一對一到多對多的各種復雜關系。

2. Hibernate是如何延遲加載?

1. Hibernate2延遲加載實現(xiàn):a)實體對象 b)集合(Collection)

2. Hibernate3 提供了屬性的延遲加載功能

當Hibernate在查詢數(shù)據(jù)的時候,數(shù)據(jù)并沒有存在與內(nèi)存中,當程序真正對數(shù)據(jù)的操作時,對象才存在與內(nèi)存中,就實現(xiàn)了延遲加載,他節(jié)省了服務器的內(nèi)存開銷,從而提高了服務器的性能。

3.Hibernate中怎樣實現(xiàn)類之間的關系?(如:一對多、多對多的關系)

類與類之間的關系主要體現(xiàn)在表與表之間的關系進行操作,它們都市對對象進行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-one、one-to-many、many-to-many、

4. 說下Hibernate的緩存機制

1. 內(nèi)部緩存存在Hibernate中又叫一級緩存,屬于應用事物級緩存

2. 二級緩存:

a) 應用及緩存

b) 分布式緩存

條件:數(shù)據(jù)不會被第三方修改、數(shù)據(jù)大小在可接受范圍、數(shù)據(jù)更新頻率低、同一數(shù)據(jù)被系統(tǒng)頻繁使用、非 關鍵數(shù)據(jù)

c) 第三方緩存的實現(xiàn)

一級緩存:session級的緩存也叫事務級的緩存,只緩存實體,生命周期和session一致。不能對其進行管理。

不用顯示的調(diào)用。

二級緩存:sessionFactory緩存,也叫進程級的緩存,使用第3方插件實現(xiàn)的,也值緩存實體,生命周期和sessionFactory一致,可以進行管理。

首先配置第3放插件,我們用的是EHCache,在hibernate.cfg.xml文件中加入

<property name="hibernate.cache.user_second_level_cache">true</property>

在映射中也要顯示的調(diào)用,<cache usage="read-only"/>

二級緩存之查詢緩存:對普通屬性進行緩存。如果關聯(lián)的表發(fā)生了修改,那么查詢緩存的生命周期也結(jié)束了。

在程序中必須手動啟用查詢緩存:query.setCacheable(true);/////////

5. Hibernate的查詢方式

Sql、Criteria,object comptosition

Hql:

1、 屬性查詢

2、 參數(shù)查詢、命名參數(shù)查詢

3、 關聯(lián)查詢

4、 分頁查詢

5、 統(tǒng)計函數(shù)

6. 如何優(yōu)化Hibernate?

1.使用雙向一對多關聯(lián),不使用單向一對多

2.靈活使用單向一對多關聯(lián)

3.不用一對一,用多對一取代

4.配置對象緩存,不使用集合緩存

5.一對多集合使用Bag,多對多集合使用Set

6. 繼承類使用顯式多態(tài)

7. 表字段要少,表關聯(lián)不要怕多,有二級緩存撐腰

1.Hibernate有哪幾種查詢數(shù)據(jù)的方式

    (1)導航對象圖查詢

    (2)OID查詢

    (3)HQL

    (4)QBC

    (5)本地SQL

2.load()和get()的區(qū)別

load加載方法:

Java代碼

Users user = (Users)session.load(Users.class, userId); 
Users user = (Users)session.load(Users.class, userId);

get加載方法:

Java代碼

Users user = (Users)session.get(Users.class, userId); 
Users user = (Users)session.get(Users.class, userId);

兩加載方法區(qū)別:

區(qū)別1:如果數(shù)據(jù)庫中,沒有userId的對象。如果通過get方法加載,則返回的是一個null;如果通過load加載,則返回一個代理對象,如果后面代碼如果調(diào)用user對象的某個屬性(比如user.getPassword())會拋出異常:org.hibernate.ObjectNotFoundException;

區(qū)別2:load支持延遲加載,get不支持延遲加載。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • java正則表達式匹配所有數(shù)字的案例

    java正則表達式匹配所有數(shù)字的案例

    這篇文章主要介紹了java正則表達式匹配所有數(shù)字的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 實例講解使用Spring通過JPA連接到Db2

    實例講解使用Spring通過JPA連接到Db2

    這篇文章主要介紹了通過實例講解使用Spring通過JPA連接到Db2,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,下面我們來一起學習一下吧
    2019-06-06
  • Java后臺Controller實現(xiàn)文件下載操作

    Java后臺Controller實現(xiàn)文件下載操作

    這篇文章主要介紹了Java后臺Controller實現(xiàn)文件下載操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • java如何遠程加載class文件

    java如何遠程加載class文件

    這篇文章主要介紹了java如何遠程加載class文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java數(shù)據(jù)結(jié)構(gòu)與算法數(shù)組模擬隊列示例詳解

    java數(shù)據(jù)結(jié)構(gòu)與算法數(shù)組模擬隊列示例詳解

    這篇文章主要為大家介紹了java數(shù)據(jù)結(jié)構(gòu)與算法數(shù)組模擬隊列示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 關于連接池詳解(HikariCP、Druid)

    關于連接池詳解(HikariCP、Druid)

    這篇文章主要介紹了關于連接池詳解(HikariCP、Druid),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 前端如何調(diào)用后端接口進行數(shù)據(jù)交互詳解(axios和SpringBoot)

    前端如何調(diào)用后端接口進行數(shù)據(jù)交互詳解(axios和SpringBoot)

    一般來講前端不會給后端接口,而是后端給前端接口的情況比較普遍,下面這篇文章主要給大家介紹了關于前端如何調(diào)用后端接口進行數(shù)據(jù)交互的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 詳解Java文件下載的幾種實現(xiàn)方式

    詳解Java文件下載的幾種實現(xiàn)方式

    這篇文章主要介紹了詳解Java文件下載的幾種實現(xiàn)方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Java實現(xiàn)BASE64編碼和解碼的方法

    Java實現(xiàn)BASE64編碼和解碼的方法

    本篇文章主要介紹了Java實現(xiàn)BASE64編碼和解碼的方法,BASE64編碼通常用于轉(zhuǎn)換二進制數(shù)據(jù)為文本數(shù)據(jù),有需要的可以了解一下。
    2016-11-11
  • 深入理解Java三大特性中的多態(tài)

    深入理解Java三大特性中的多態(tài)

    多態(tài)性是對象多種表現(xiàn)形式的體現(xiàn)。在面向?qū)ο笾?,最常見的多態(tài)發(fā)生在使用父類的引用來引用子類的對象。下面這篇文章主要給大家深入的介紹了Java三大特性中多態(tài)的相關資料,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01

最新評論

通榆县| 黔西县| 元朗区| 新乡县| 黔西县| 长春市| 综艺| 汝城县| 建平县| 贡觉县| 开化县| 且末县| 仙居县| 通海县| 怀来县| 汕尾市| 太白县| 朔州市| 凤阳县| 玉山县| 潞西市| 昔阳县| 千阳县| 萝北县| 南溪县| 岗巴县| 丹凤县| 通江县| 微山县| 宣城市| 文成县| 即墨市| 新宾| 七台河市| 井冈山市| 蒙山县| 大名县| 渝中区| 岳阳市| 论坛| 宜良县|