Hibernate原理及應(yīng)用-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

成都網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)公司、微信開發(fā)、微信小程序、集團(tuán)成都定制網(wǎng)頁設(shè)計等服務(wù)項目。核心團(tuán)隊均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗,服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:門簾等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗,同時也獲得了客戶的一致贊許!

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)建事務(wù)Transation

6.persistent operate持久化操作

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

8.關(guān)閉Session

9.關(guān)閉SesstionFactory

為什么要用:

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

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

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

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

2. Hibernate是如何延遲加載?

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

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

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

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

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

4. 說下Hibernate的緩存機(jī)制

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

2. 二級緩存:

a) 應(yīng)用及緩存

b) 分布式緩存

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

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

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

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

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

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

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

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

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

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

5. Hibernate的查詢方式

Sql、Criteria,object comptosition

Hql:

1、 屬性查詢

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

3、 關(guān)聯(lián)查詢

4、 分頁查詢

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

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

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

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

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

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

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

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

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

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

    (1)導(dǎo)航對象圖查詢

    (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);

新聞名稱:Hibernate原理及應(yīng)用-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article22/eggcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計營銷型網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站排名企業(yè)建站、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)