![Java-Web之三大框架試題(SSH)_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/2a7cd395-6ead-4f3d-ba5b-348382600aeb/2a7cd395-6ead-4f3d-ba5b-348382600aeb1.gif)
![Java-Web之三大框架試題(SSH)_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/2a7cd395-6ead-4f3d-ba5b-348382600aeb/2a7cd395-6ead-4f3d-ba5b-348382600aeb2.gif)
![Java-Web之三大框架試題(SSH)_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/2a7cd395-6ead-4f3d-ba5b-348382600aeb/2a7cd395-6ead-4f3d-ba5b-348382600aeb3.gif)
![Java-Web之三大框架試題(SSH)_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/2a7cd395-6ead-4f3d-ba5b-348382600aeb/2a7cd395-6ead-4f3d-ba5b-348382600aeb4.gif)
![Java-Web之三大框架試題(SSH)_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/2a7cd395-6ead-4f3d-ba5b-348382600aeb/2a7cd395-6ead-4f3d-ba5b-348382600aeb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 Java 三大框架期末復(fù)習(xí)試題 大學(xué)準(zhǔn)備期末復(fù)習(xí)以及準(zhǔn)備職業(yè)面試之用本資料有齊全的選擇題,簡單題,編程題;絕對實用;Hibernate部分一、單選題 (共50題,每題2分)1下面不屬于持久化的是( a)。A把對象轉(zhuǎn)換為字符串的形式通過網(wǎng)絡(luò)傳輸,在另一端接收到這個字符串后能把對象還原出來B把程序數(shù)據(jù)從數(shù)據(jù)庫中讀出來C從XML配置文件中讀取程序的配置信息D把程序數(shù)據(jù)保存為文件2下面(a )不屬于關(guān)系對象映射的映射信息。A程序包名到數(shù)據(jù)庫庫名的映射B程序類名到數(shù)據(jù)庫表名的映射C實體屬性名到數(shù)據(jù)庫表字段的映射D實體屬性類型到數(shù)據(jù)庫表字段類型的映射3下面( ab)不是Hibernate 映射文件中包含
2、的內(nèi)容。(選兩項)A數(shù)據(jù)庫連接信息BHibernate 屬性參數(shù)C主鍵生成策略D屬性數(shù)據(jù)類型4下面的程序執(zhí)行后沒有報錯,但數(shù)據(jù)總保存不到數(shù)據(jù)庫,最可能的原因是(d )。public static void main(String args) SessionFactory sf =new Configuration().configure().buildSessionFactory();Session session = sf.openSession();Medal medal = new Medal();medal.setOwner(Shen Baozhi);medal.setSport(Ta
3、ble Tennis-Womens Singles);medal.setType(Gold Medal);session.save(user);session.close();A配置文件配置有誤B沒有在配置文件中包含對映射文件的聲明C映射文件配置有誤D沒有開啟事務(wù)5下列屬于多對一關(guān)系的是(bd )。(選兩項)A書和作者B手機(jī)和生產(chǎn)廠家C用戶和發(fā)布的出租信息D士兵和班長6下面是某系統(tǒng)中的兩個實體類,依此可以得知(b )。public class Wage /月工資實體類private Long wid;private String empName; /雇員姓名private String mon
4、th; /月份/Getter & Setterpublic class WageItem /工資項private Wage wage;private Long iid;private String itemName; /項目名稱,如基本工資、職位津貼等private String amount; /數(shù)額/Getter & SetterAWage 和WageItem 間存在單向一對多的關(guān)聯(lián)BWage 和WageItem 間存在單向多對一的關(guān)聯(lián)CWage 和WageItem間存在雙向一對多的關(guān)聯(lián)DWage 和WageItem間存在雙向多對一的關(guān)聯(lián)7 兩實體類代碼如下:public class Wa
5、ge /月工資實體類private Long wid;private String empName; /雇員姓名private String month; /月份/Getter & Setterpublic class WageItem /工資項private Wage wage;private Long iid;private String itemName; /項目名稱,如基本工資、職位津貼等private String amount; /數(shù)額/Getter & Setter其中的WageItem 實體類有如下配置,其中空白處應(yīng)填入的代碼是( a)。class name=WageItem
6、table=fin_wage_item_ABCD8已知系統(tǒng)中TBL_USER 表對應(yīng)的實體類是TblUser,下列HQL 語句中正確的是( )。Afrom Tbl_UserBselect * from tbluserCselect TblUser from TblUserDfrom TblUser t where t.age= 159對下面代碼中存在的錯誤,說法不正確的是(d )。String hql = from TblUser u where u.status = status ;/Query query = session.createQuery();/query.setNamedPar
7、ameter(:status,);/return query.executeQuery(hql);/A第一行中的命名參數(shù)“status”應(yīng)該是“:status”B第二行createQuery 函數(shù)應(yīng)該傳入hql 作為參數(shù)C第三行命名參數(shù)名稱“:status”應(yīng)該是“status”D第四行應(yīng)該是“return query.list(hql);”10下面代碼的執(zhí)行效果是( c)。String hql = from TblStudent s order by s.score asc;Query query = session.createQuery(hql);query.setFirstResult
8、(0);query.setMaxResults(5);return query.list();A返回分?jǐn)?shù)最高的五個學(xué)生B返回分?jǐn)?shù)最高的六個學(xué)生C返回分?jǐn)?shù)最低的五個學(xué)生D返回分?jǐn)?shù)最低的六個學(xué)生11.下面HQL語句的含義是( D)。select stufrom TblStudent stuwhere stu.score ( select avg(score) from TblStudent )A查詢所有學(xué)生的平均分B查詢得分大于平均分的學(xué)生的成績C查詢得分最高的學(xué)生D查詢得分大于平均分的學(xué)生12.假設(shè)對Customer 類的orders 集合采用延遲檢索策略,編譯或運(yùn)行以下程序,會出現(xiàn)(C )Se
9、ssion session=sessionFactory.openSession();Customer customer=(Customer)session.get(Customer.class,new Long(1);session.close();Iterator orderIterator=customer.getOrders().iterator();A編譯出錯B編譯通過,并正常運(yùn)行C編譯通過,但運(yùn)行時拋出異常D. 運(yùn)行時輸出“session.open”13選出不是Expression方法的選項(DAeq()Bgt()Clike()DisNULL()14與下面代碼效果相同的HQL 語句
10、是(A )。Criteria criteria = session.createCriteria(User.class);criteria.add(Restrictions.like(name,admin%);List result = criteria.list();Afrom User where name like admin%Bfrom User where name like %admin%Cfrom name where Restrictions like admin%Dselect from Useras u where u. Restrictions like a
11、dmin%15執(zhí)行下面代碼返回的結(jié)果為( A)。Criteria criteria = session.createCriteria(User.class);criteria.addOrder(Order.desc(id);List result = criteria.list();A以id降序排列的User對象列表B以id升序排列的User對象列表C返回Order為id的User對象的列表D不返回對象16下面代碼能夠返回房屋表中第51行數(shù)據(jù)后的20 行數(shù)據(jù)的是(B )。ACriteria criteria = session.createCriteria(House.class);Crite
12、ria.setFirstResult(51);List result = criteria.list();BCriteria criteria = session.createCriteria(House.class);Criteria.setFirstResult(51);criteria.setMaxResult(20);List result = criteria.list();CCriteria criteria = session.createCriteria(House.class);criteria.setMaxResult(20);List result = criteria.
13、list();DCriteria criteria = session.createCriteria(House.class);Criteria.setFirst(51);criteria.setMax(20);List result = criteria.list(); 17下面關(guān)于Hibernate關(guān)聯(lián)映射說法錯誤的是()。A. 配置單項多對一關(guān)聯(lián)映射,在配置文件中需要使用標(biāo)簽B. 面向?qū)ο箢I(lǐng)域的關(guān)聯(lián)關(guān)系可以分為單向一對多或者單向多對一C. 人和手機(jī)號碼之間的關(guān)系是一對多關(guān)系D. cascade屬性描述了級聯(lián)操作的規(guī)則18如果數(shù)據(jù)庫是oracle或者db2,則generator屬性值不可以
14、使用(B)。 A. native B. identity C. hiloD. sequence19 Hibernate增加數(shù)據(jù)時可以調(diào)用Session的( a )方法。 A. save() B. update() C. delete()D. get()20 Hibernate對JDBC訪問數(shù)據(jù)庫的代碼進(jìn)行了封裝,從而大大的簡化了數(shù)據(jù)訪問層的代碼,它是針對三層架構(gòu)中( c )的解決方案。 A. 表現(xiàn)層 B. 業(yè)務(wù)邏輯層 C. 持久化層D. 數(shù)據(jù)庫系統(tǒng)21 使用Hibernate技術(shù)實現(xiàn)數(shù)據(jù)庫持久化時,(d)內(nèi)容不在Hibernate配置文件中。 A. 數(shù)據(jù)庫連接信息 B. 數(shù)據(jù)庫類型 C. sh
15、ow_sql參數(shù)D. 數(shù)據(jù)庫表和實體的映射信息22 級聯(lián)刪除時,cascade屬性是( c )。 A. all B. save C. deleteD. save-update23 以下不屬于Cascade的屬性取值的有( b )。 A. all B. save C. deleteD. save-update24 Inverse屬性值為( c )標(biāo)識主控方。 A. all B. false C. trueD. none25 從性能考慮,Inverse屬性值通常設(shè)置為( b)。 A. all B. false C. trueD. None26 數(shù)據(jù)庫表account對應(yīng)實體類為Account類,以
16、下HQL語句錯誤的有( d)。 A. select * from Account B. From Account C. From Account as modelD. Select * from account27 setMaxResult(3)方法中,參數(shù)值3是指( C )。 A. 從第3條記錄開始 B. 從第4條記錄開始 C. 查詢3條記錄D. 查詢4條記錄28 關(guān)于HQL查詢,下列說法中錯誤的是( A )。 A. HQL查詢的select子句中必須區(qū)分大小寫 B. HQL支持統(tǒng)計函數(shù) C. HQL支持僅查詢對象的某幾個屬性,并將查詢結(jié)果保存在Object數(shù)組中D. HQL語句可以實現(xiàn)類似
17、于PreparedStatement的效果29 在Hibernate中,下面代碼實現(xiàn)了對Account實體中accountName屬性的模糊查詢,則下列說法正確的是(B )。Session session=this.getSession();String hql=from Account model where model.accountName like ?; /(1)Query query=session.createQuery(hql); /(2)query.setString(0,%張%);/(3)List list=query.list();/(4) A. 第(1)行中,Accoun
18、t 與model之間必須有as關(guān)鍵字 B. 第(2)行中沒有錯誤 C. 第(3)行應(yīng)該為:query.setString(0,張飛);D. 第(4)行應(yīng)該為:List list=query.executeQuery();30 Criteria查詢通過面向?qū)ο蠡脑O(shè)計將數(shù)據(jù)查詢條件封裝為一個對象,下列寫法正確的是( D )。 A. Criteria criteria=session.createQuery(Account.class)List list=criteria.list(); B. Criteria criteria=session.addCriteria(Account.class)
19、List list=criteria.list(); C. Criteria criteria=session.queryCriteria(Account.class)List list=criteria.list();D. Criteria criteria=session.createCriteria(Account.class)List list=criteria.list();31 將某個對象從Session的一級緩存中清除的方法是( C)。 A. close() B. clear() C. evict()D. flush()32 在set節(jié)點(diǎn)中設(shè)置outer-join=true,當(dāng)調(diào)
20、用Session的find方法時采用( C)。 A. 立即檢索 B. 延遲檢索 C. 迫切左外連接檢索D. 批量檢索33 類級別的默認(rèn)檢索是( a)。 A. 立即檢索 B. 延遲檢索 C. 迫切左外連接檢索D. 批量檢索34 延遲檢索返回代理類的實例不具備的特征有( d)。 A. 在Hibernate運(yùn)行時動態(tài)生成 B. 當(dāng)Hibernate創(chuàng)建代理類實例時,僅初始化OID屬性,其他屬性均為null,占用內(nèi)存空間較少 C. 當(dāng)應(yīng)用程序第一次訪問代理類實例時, Hibernate將初始化代理類的實例,在初始化的過程中執(zhí)行select語句并從數(shù)據(jù)庫中加載對象的所有數(shù)據(jù)。D. 當(dāng)訪問getId訪法時
21、,Hibernate會初始化代理類的實例,在初始化的過程中執(zhí)行select語句,并從數(shù)據(jù)為中加載對象的所有數(shù)據(jù)。35 由持久化狀態(tài)向游離狀態(tài)轉(zhuǎn)變的方法不包括( C)。 A. close() B. clear() C. lock()D. evict()36 由持久化狀態(tài)向游離狀態(tài)轉(zhuǎn)變的方法不包括( C)。 A. 臨時狀態(tài) B. 無引用狀態(tài) C. 持久化狀態(tài)D. 游離狀態(tài)37 對于以下程序,Customer對象在第幾行變?yōu)橛坞x狀態(tài)?( D)Session session1=sessionFactory.openSession(); Transaction tx1 = session1.beginT
22、ransaction(); Customer customer=new Customer(); /1customer.setName(Tom); session1.save(customer); /2mit(); /3session1.close(); /4 A. 第(1)行 B. 第(2)行 C. 第(3)行D. 第(4)行38 關(guān)于HQL與SQL,以下哪些說法正確?(B)。 A. HQL與SQL沒什么差別 B. HQL面向?qū)ο螅鳶QL操縱關(guān)系數(shù)據(jù)庫 C. 在HQL與SQL中,都包含select,insert,update,delete語句D. HQL僅用于查詢和刪除數(shù)據(jù),不
23、支持insert,update語句39 下面關(guān)于hibernate核心接口說明錯誤的是?(B)。 A. Configuration 接口:配置Hibernate,根據(jù)其啟動hibernate,創(chuàng)建SessionFactory 對象 B. SessionFactory 接口:負(fù)責(zé)保存、更新、刪除、加載和查詢對象,是線程不安全的 C. Query 和Criteria 接口:執(zhí)行數(shù)據(jù)庫的查詢D. Transaction 接口:管理事務(wù)40 下面關(guān)于Hibernate說法正確的是(BD)。(選擇兩項) A. Hibernate是ORM的一種實現(xiàn)方式 B. Hibernate不要JDBC的支持 C. 屬
24、于控制層D. 屬于數(shù)據(jù)持久層41 下面關(guān)于Hibernate中Session的說法正確的是(AD)。(選擇兩項) A. Session是輕量級的,可以隨意的創(chuàng)建和銷毀 B. Session是重量級的,不能隨意的創(chuàng)建和銷毀 C. Session是線程安全的D. Session不是線程安全的42 下面關(guān)于Hibernate中l(wèi)oad和get方法說法正確的是(D)。 A. 這兩個方法是一樣的,沒有任何的區(qū)別 B. 這兩個方法不一樣,laod先找緩存,再找數(shù)據(jù)庫 C. 這兩個方法不一樣,get先找緩存,再找數(shù)據(jù)庫D. 以上說法都不對43 下面關(guān)于Hibernate中Transaction的使用說法正確
25、的是(B)。 A. Transaction是可有可無的 B. Transaction在做查詢的時候是可選的 C. Transaction在做刪除的時候是可選的D. Transaction在做修改的時候是可選的44 從SessionFactory中得到Session的方法是(A)。 A. getSession B. openSession C. currentSessionD. createSession45 關(guān)于Hibernate中關(guān)系的說話正確的是(A)。 A. 一對多必須用Set來映射 B. 多對一必須用Set來映射 C. 一對多可以用Set來映射,也可以用List、Map來映射D. 多對
26、一可以用Set來映射,也可以用List、Map來映射46 下面關(guān)于數(shù)據(jù)持久化概念的描述,錯誤的是(A)。 A. 保存在內(nèi)存中數(shù)據(jù)的狀態(tài)是臨時狀態(tài) B. 持久狀態(tài)的數(shù)據(jù)在關(guān)機(jī)后數(shù)據(jù)依然存在 C. 數(shù)據(jù)可以由持久狀態(tài)轉(zhuǎn)換為臨時狀態(tài)D. 將數(shù)據(jù)轉(zhuǎn)換為持久狀態(tài)的機(jī)制稱為數(shù)據(jù)持久化47 在使用了Hibernate的系統(tǒng)中,要想在刪除某個客戶數(shù)據(jù)的同時刪除該客戶對應(yīng)的所有訂單數(shù)據(jù),下面方法可行的是(A)。 A. 配置客戶和訂單關(guān)聯(lián)的cascade屬性為save-update B. 配置客戶和訂單關(guān)聯(lián)的cascade屬性為all C. 設(shè)置多對一關(guān)聯(lián)的inverse屬性為trueD. 設(shè)置多對一關(guān)聯(lián)的inv
27、erse屬性為false48 以下關(guān)于SessionFactory的說法哪些正確?( C)。 A. 對于每個數(shù)據(jù)庫事務(wù),應(yīng)該創(chuàng)建一個SessionFactory對象 B. 一個SessionFactory對象對應(yīng)多個數(shù)據(jù)庫存儲源 C. SessionFactory是重量級的對象,不應(yīng)該隨意創(chuàng)建。如果系統(tǒng)中只有一個數(shù)據(jù)庫存儲源,只需要創(chuàng)建一個D. SessionFactory的load()方法用于加載持久化對象49 在Hibernate關(guān)系映射配置中,inverse屬性的含義是( A)。 A. 定義在節(jié)點(diǎn)上,聲明要負(fù)責(zé)關(guān)聯(lián)的維護(hù) B. 聲明在節(jié)點(diǎn)上,聲明要對方負(fù)責(zé)關(guān)聯(lián)的維護(hù) C. 定義在節(jié)點(diǎn)上,
28、聲明對方要負(fù)責(zé)關(guān)聯(lián)的維護(hù)D. 聲明在節(jié)點(diǎn)上,聲明要負(fù)責(zé)關(guān)聯(lián)的維護(hù)50 Hibernate對象從臨時狀態(tài)到持久狀態(tài)轉(zhuǎn)換的方式有?( A)。 A. 調(diào)用session的save方法 B. 調(diào)用session的close方法 C. 調(diào)用session的clear方法D. 調(diào)用session的evict方法簡答題1,Hibernate工作原理及為什么要用?原理:1.讀取并解析配置文件2.讀取并解析映射信息,創(chuàng)建SessionFactory3.打開Sesssion4.創(chuàng)建事務(wù)Transation5.持久化操作6.提交事務(wù)7.關(guān)閉Session8.關(guān)閉SesstionFactory 為什么要用:1. 對J
29、DBC訪問數(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在
30、查詢數(shù)據(jù)的時候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對數(shù)據(jù)的操作時,對象才存在與內(nèi)存中,就實現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。3Hibernate中怎樣實現(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ù)不
31、會被第三方修改、數(shù)據(jù)大小在可接受范圍、數(shù)據(jù)更新頻率低、同一數(shù)據(jù)被系統(tǒng)頻繁使用、非 關(guān)鍵數(shù)據(jù)c) 第三方緩存的實現(xiàn)5 Hibernate的查詢方式Sql、Criteria,object comptositionHql: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,多對多集合使用Set6. 繼承類使用顯式多態(tài)7. 表字段要少,表關(guān)聯(lián)不要怕多,有二級緩存撐腰7 Hibernate有
32、哪幾種查詢數(shù)據(jù)的方式3種:hql、條件查詢QBC(Query By Criteria)、原生sql (通過createSQLQuery建立)8. 談?wù)凥ibernate中inverse的作用inverse屬性默認(rèn)是false,就是說關(guān)系的兩端都來維護(hù)關(guān)系。比如Student和Teacher是多對多關(guān)系,用一個中間表TeacherStudent維護(hù)。Gp)i如果Student這邊inverse=”true”, 那么關(guān)系由另一端Teacher維護(hù),就是說當(dāng)插入Student時,不會操作TeacherStudent表(中間表)。只有Teacher插入或刪除時才會觸發(fā)對中間表的操作。所以兩邊都inve
33、rse=”true”是不對的,會導(dǎo)致任何操作都不觸發(fā)對中間表的影響;當(dāng)兩邊都inverse=”false” 或默認(rèn)時,會導(dǎo)致在中間表中插入兩次關(guān)系。9. 說說Hibernate中的update()和saveOrUpdate()的區(qū)別,session的load()和get()的區(qū)別。saveOrUpdate()方法可以實現(xiàn)update()的功能,但會多些步驟,具體如下:如果對象在該session中已經(jīng)被持久化,不進(jìn)行操作;對象的標(biāo)識符屬性(identifier property)在數(shù)據(jù)庫中不存在或者是個暫時的值,調(diào)用save()方法保存它;如果session中的另一個對象有相同的標(biāo)識符拋出一個異
34、常;以上皆不符合則調(diào)用update()更新之。Session.load/get方法均可以根據(jù)指定的實體類和id從數(shù)據(jù)庫讀取記錄,并返回與之對應(yīng)的實體對象。session的get()和load()其區(qū)別在于:如果未能發(fā)現(xiàn)符合條件的記錄,get方法返回null,而load方法會拋出一個ObjectNotFoundException;load方法可返回實體的代理類實例,而get方法永遠(yuǎn)直接返回實體類;load方法可以充分利用內(nèi)部緩存和二級緩存中的現(xiàn)有數(shù)據(jù),而get方法則僅僅在內(nèi)部緩存中進(jìn)行數(shù)據(jù)查找,如沒有發(fā)現(xiàn)對應(yīng)數(shù)據(jù),將越過二級緩存,直接調(diào)用SQL完成數(shù)據(jù)讀取。10.Hibernate中對象的三種狀
35、態(tài)瞬時態(tài)(Transient)、 持久態(tài)(Persistent)、脫管態(tài)(Detached)。處于持久態(tài)的對象也稱為PO(Persistence Object),瞬時對象和脫管對象也稱為VO(Value Object)。瞬時態(tài)由new命令開辟內(nèi)存空間的java對象,eg. Person person = new Person(”amigo”, “女”);如果沒有變量對該對象進(jìn)行引用,它將被java虛擬機(jī)回收。瞬時對象在內(nèi)存孤立存在,它是攜帶信息的載體,不和數(shù)據(jù)庫的數(shù)據(jù)有任何關(guān)聯(lián)關(guān)系,在Hibernate中,可通過session的save()或 saveOrUpdate()方法將瞬時對象與數(shù)據(jù)庫
36、相關(guān)聯(lián),并將數(shù)據(jù)對應(yīng)的插入數(shù)據(jù)庫中,此時該瞬時對象轉(zhuǎn)變成持久化對象。持久態(tài)處于該狀態(tài)的對象在數(shù)據(jù)庫中具有對應(yīng)的記錄,并擁有一個持久化標(biāo)識。如果是用hibernate的delete()方法,對應(yīng)的持久對象就變成瞬時對象,因數(shù)據(jù)庫中的對應(yīng)數(shù)據(jù)已被刪除,該對象不再與數(shù)據(jù)庫的記錄關(guān)聯(lián)。當(dāng)一個session執(zhí)行close()或clear()、evict()之后,持久對象變成脫管對象,此時持久對象會變成脫管對象,此時該對象雖然具有數(shù)據(jù)庫識別值,但它已不在HIbernate持久層的管理之下。持久對象具有如下特點(diǎn):1. 和session實例關(guān)聯(lián);n2. 在數(shù)據(jù)庫中有與之關(guān)聯(lián)的記錄。脫管態(tài)當(dāng)與某持久對象關(guān)聯(lián)的s
37、ession被關(guān)閉后,該持久對象轉(zhuǎn)變?yōu)槊摴軐ο?。?dāng)脫管對象被重新關(guān)聯(lián)到session上時,并再次轉(zhuǎn)變成持久對象。脫管對象擁有數(shù)據(jù)庫的識別值,可通過update()、saveOrUpdate()等方法,轉(zhuǎn)變成持久對象。脫管對象具有如下特點(diǎn):1. 本質(zhì)上與瞬時對象相同,在沒有任何變量引用它時,JVM會在適當(dāng)?shù)臅r候?qū)⑺厥眨?. 比瞬時對象多了一個數(shù)據(jù)庫記錄標(biāo)識值。11 Detached Object(游離對象)有什么好處Detached Object(游離對象)可以傳遞到任何層直到表現(xiàn)層而不是用任何DTO(Data Transfer Objects). 然后你還可以重新把游離對象賦給另外一個Ses
38、sion.12. hibernate如何實現(xiàn)數(shù)據(jù)表映射的繼承關(guān)系1、兩個表,子類重復(fù)父類的屬性。2、一個表,子類父類共用一個表 3、兩個表,子類引用父類的主鍵,享用公共的字段或?qū)傩浴?批量刪除Query query=session.createQuery(”update”或”delete”);query.executeUpdate();13.Hibernate的應(yīng)用(hibernate的結(jié)構(gòu))答:/首先獲得SessionFactory 的對象SessionFactory sessionFactory = new Configuration().configure().buildSessionF
39、actory();/然后獲得session 的對象Session session = sessionFactory.openSession();/其次獲得Transaction 的對象Transaction tx = session.beginTransaction();/執(zhí)行相關(guān)的數(shù)據(jù)庫操作:增,刪,改,查session.save(user); /增加, user 是User 類的對象session.delete(user); /刪除session.update(user); /更新Query query = session.createQuery(“from User”); /查詢List
40、 list = query.list();/提交事務(wù)mit();/如果有異常,我們還要作事務(wù)的回滾,恢復(fù)到操作之前tx.rollback();/最后還要關(guān)閉session,釋放資源session.close();14.Hibernate的五個核心接口Configuration 接口:配置Hibernate,根據(jù)其啟動hibernate,創(chuàng)建SessionFactory 對象;SessionFactory 接口:初始化Hibernate,充當(dāng)數(shù)據(jù)存儲源的代理,創(chuàng)建session 對象,sessionFactory 是線程安全的,意味著它的同一個實例可以被應(yīng)用的多個線程共享,是重量級、
41、二級緩存;Session 接口:負(fù)責(zé)保存、更新、刪除、加載和查詢對象,是線程不安全的,避免多個線程共享同一個session,是輕量級、一級緩存;Transaction 接口:管理事務(wù);Query 和Criteria 接口:執(zhí)行數(shù)據(jù)庫的查詢。15.hibernate中數(shù)據(jù)表映射關(guān)系主要有什么類型?one-to-manyinverse:主控方,外鍵的關(guān)系有誰控制inverse=false 是主控方,外鍵是由它控制的inverse=true 是被控方,外鍵與它沒關(guān)系要想實現(xiàn)主控方的控制必須將被控方作為主控方的屬性cascade:級聯(lián)主表增從表增主表修從表修主表刪從表刪lazy:延遲lazy=fals
42、e:一下將所有的內(nèi)容取出,不延時(常用)lazy=true:取出部分內(nèi)容,其余內(nèi)容動態(tài)去取通過get可以取出對方的所有內(nèi)容16. hibernate中Query對象的使用1 個或多個屬性查詢:Query query=session.createQuery(”select customername,customerid from Customer”)List l=query.list();For(int i=0;il.size();i+)Obejct object=(Object)l.get(i);Object0 object1分組: “select count(*),productname f
43、rom Product group by productname order by productname”取值與屬性一樣配置的查詢,在*.hbm.xml中 Query query=session.getNamedQuery(sql);聯(lián)接1”from Customer as customer join fetch customer.buySet”:將多的放到buySet屬性中,得出的結(jié)是Customer有一個,Buy有多個聯(lián)接2“from Customer as customer join customer.buySet”:得出的對象,customer與buy是1對1子查詢:”from Cu
44、stomer as customer where (select count(*) from customer.buySet)1編程題一:關(guān)聯(lián)映射 考點(diǎn)1:一對多,多對一 (簡單配置一道題)例1.在MySQL或SQL Server中創(chuàng)建數(shù)據(jù)庫:CITYOA,并創(chuàng)建如下表:(1)信息類別表:OA_Category字段名類型說明GNoInt(10)類別編號(主鍵)自增量GNameVarchar(20)類別名稱(2)信息表:OA_Info字段名類型說明INFONOint(10)信息編號(主鍵)自增量SubjectVarchar(200)信息標(biāo)題ContentVarchar(1000)信息內(nèi)容GNOInt(10)類別編號(外鍵)Value類:(一道題,不用寫get(), set())public class InfoValue private int no=0;private Stri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 瓦屋面施工合同(9篇)
- 2025年保險經(jīng)紀(jì)公司經(jīng)紀(jì)人合同協(xié)議
- 2025年信陽土地租賃合同規(guī)定
- 2025年住宅購置合同代理人職責(zé)
- 2025年農(nóng)村資源互助共享協(xié)議書
- 2025年激光合作目標(biāo)項目提案報告模板
- 2025年毛毯項目規(guī)劃申請報告
- 2025年貓爬架項目申請報告
- 2025年礦用電氣設(shè)備項目申請報告模范
- 2025年優(yōu)化法律咨詢服務(wù)協(xié)議的
- 項目團(tuán)隊的激勵和激勵理論
- 商超招商方案
- 廣東省社會培訓(xùn)評價組織備案申請材料清單說明(2024年)
- 藥物過量的護(hù)理查房
- 人教版六年級數(shù)學(xué)下冊第四單元比例大單元教學(xué)設(shè)計
- 八年級物理課程綱要(八下)
- 湖北省首屆體育社會組織益啟體育項目大賽福壽康寧系列賽事活動體育品牌賽事活動
- 《生產(chǎn)異常管理》課件
- 松茸推廣引流方案
- 金牌餐飲店長實戰(zhàn)工具書
- 幼兒發(fā)育保健知識講座
評論
0/150
提交評論