Hibernate復習題1含答案_第1頁
Hibernate復習題1含答案_第2頁
Hibernate復習題1含答案_第3頁
Hibernate復習題1含答案_第4頁
Hibernate復習題1含答案_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、美斯坦福在線考試系統(tǒng) 荊州理工G3 Hibernate 科目: SCCEG3Hibernate總分: 100分時間: 60分鐘 一、單選題 (共45題,每題2分,說明:選擇一項正確的答案) 1、 下面關于Hibernate的說法,錯誤的是( ) A、Hibernate是一個“對象-關系映射”的實現(xiàn) B、Hibernate是一種數(shù)據(jù)持久化技術 C、Hibernate是JDBC的替代技術 他是對JDBC做了輕量級的對象封裝 D、使用Hibernate可以簡化持久化層的編碼 參考答案: C 2、 在使用了Hibernate的系統(tǒng)中,要想在刪除某個客戶數(shù)據(jù)的同時刪除該客戶對應的所有訂單數(shù)據(jù),下面方法可

2、行的是( ) A、配置客戶和訂單關聯(lián)的cascade屬性為save-update B、配置客戶和訂單關聯(lián)的cascade屬性為all C、設置多對一關聯(lián)的inverse屬性為true D、設置多對一關聯(lián)的inverse屬性為false 參考答案: B詳解 3、 下面一對多關聯(lián)的配置中,存在哪些錯誤( ) set name=orders inverse=false cascade=true one-to-many class=com.x.entity.Order column=customer_id / /set A、inverse屬性不可以設置為false B、cascade屬性不可設置為tr

3、ue C、class=com.x.entity.Order應為type=com.x.entity.Order D、column屬性不可再one-to-many節(jié)點內(nèi)設置 參考答案: B 4、 下面創(chuàng)建Criteria對象的語句中正確的是( ) A、Criteria c = query.createCriteria(); B、Criteria c = query.addCriteria(); C、Criteria c = session.createCriteria(); D、Criteria c = session.createCriteria(User.class); 參考答案: D 5、

4、下面關于Hibernate映射文件配置中dynamic-update屬性說法正確的是( )詳解 A、動態(tài)的修改,如果為true,只改變有改變的屬性 B、動態(tài)的修改,如果為true,只改變沒有改變過的屬性 C、動態(tài)的修改,如果為true,改變所有的屬性 D、以上說法都錯 參考答案: A 6、 下面關系Hibernate對象的狀態(tài)說話正確的是( )臨時 持久化 游離 A、Hibernat的對象只有一種狀態(tài) B、Hibernat的對象有2種狀態(tài) C、Hibernat的對象有3種狀態(tài) D、Hibernat的對象有4種狀態(tài) 參考答案: C 7、 Hibernate對象從瞬時到持久狀態(tài)轉(zhuǎn)換的方式有( )。

5、 A、調(diào)用session的save方法 saveorupdat B、調(diào)用session的create方法 C、調(diào)用session的update方法 D、調(diào)用session的load方法 參考答案: A 8、 J2EE中往往使用_封裝業(yè)務實體,_封裝業(yè)務邏輯,_調(diào)用( ) A、實體Bean、會話 Bean、實體Bean、會話 Bean B、實體Bean、會話 Bean、會話Bean、實體Bean C、會話Bean、實體Bean、實體Bean、會話 Bean D、會話Bean、實體Bean、會話Bean、實體Bean 參考答案: B 9、 EJB分為( )三種類型 A、會話bean、實體bean、

6、Web service B、會話bean、實體bean、消息驅(qū)動bean C、Jsp、servlet、jsf D、實現(xiàn)類、Home接口類、Object接口類 參考答案: B 10、 有狀態(tài)Session Bean和無狀態(tài)Session Bean的區(qū)別說法正確的是( )詳解 A、無狀態(tài)Session Bean要保存客戶端的狀態(tài),同客戶端是一對一 B、有狀態(tài)Session Bean要保存客戶端的狀態(tài),同客戶端是一對一 C、他們都要保存客戶端的狀態(tài),同客戶端是一對一 D、以上說法都不對 參考答案: B 11、 有以下代碼段,下面說法正確的是( ) p65 String qlString = sele

7、ct model from Student as model where model.createDate = ?1; (1) Query query = em.createQuery(qlString); (2) query.setParameter(0, 2000-12-05); (3) List list = q.list(); (4) A、第一行有錯,必須為參數(shù)起個名字 B、第三行有錯誤,query.setParameter(0, 2000-12-05)應為query.setParameter(1, 2000-12-05); C、第四行沒有錯誤 D、這些語句沒有錯誤 參考答案: B 1

8、2、 在EJB3.0中用來保存一個對象的方法是( ) A、save B、update C、persist D、create 參考答案: C 13、 在J2EE中,Servlet和JSP組件必須在( )容器中才能運行 A、Applet B、客戶端 C、Web D、EJB 參考答案: C 14、 在J2EE中,EJB組件必須在( )容器中才能運行 A、Applet B、客戶端 C、Web D、EJB 參考答案: D 15、 在三層結構中,數(shù)據(jù)訪問層承擔的責任是( ) A、定義實體類 B、數(shù)據(jù)的增刪改查操作 C、業(yè)務邏輯的描述 D、頁面展示和控制轉(zhuǎn)發(fā) 參考答案: B 16、 set元素有一個casc

9、ade屬性,如果希望Hibernate級聯(lián)保存集合中的對象,casecade屬性應該?。?)值 A、none B、save C、delete D、save-update 參考答案: D 17、 以下程序的打印結果是( ) tx = session.beginTransaction(); Customer c1=(Customer)session.load(Customer.class,new Long(1); Customer c2=(Customer)session.load(Customer.class,new Long(1); System.out.println(c1=c2); tx.

10、commit(); session.close(); A、運行出錯,拋出異常 B、打印false C、打印true D、編譯出錯 參考答案: C 18、 以下程序代碼對Customer的name屬性修改了兩次: tx = session.beginTransaction(); Customer customer=(Customer)session.load(Customer.class, new Long(1); customer.setName(Jack); customer.setName(Mike); mit(); 執(zhí)行以上程序,Hibernate需要向數(shù)據(jù)庫提交( )條up

11、date語句 A、0 B、1 C、2 D、3 參考答案: B 19、 對于以下程序,Customer對象在第( )行變?yōu)橛坞x狀態(tài) close clear evict P82 Customer customer=new Customer(); customer.setName(Tom); Session session1=sessionFactory.openSession(); Transaction tx1 = session1.beginTransaction(); line1 session1.save(customer); line2 mit(); line3 sessi

12、on1.close(); line4 A、line1 B、line2 C、line3 D、line4 參考答案: D 20、 以下檢索策略中,( )利用了外連結查詢 詳解20 A、立即檢索 B、延遲檢索 C、迫切左外連結檢索 D、迫切右外連結檢索 參考答案: C 21、 假設對Customer類的orders集合采用延遲檢索策略,編譯或運行以下程序,會出現(xiàn)( ) Session session=sessionFactory.openSession(); tx = session.beginTransaction(); Customer customer=(Customer)session.ge

13、t(Customer.class,new Long(1); mit(); session.close(); Iterator orderIterator=customer.getOrders().iterator(); A、編譯出錯 B、編譯通過,正常運行,不顯示任何信息 C、編譯通過,正常運行,并顯示出結果 D、編譯通過,但運行時拋出異常 參考答案: D 22、 在源代碼中嵌入映射信息需要( ) A、Annoation B、hbm.xml C、struts.xml D、web.xml 參考答案: A 23、 ORM的好處包括( ) A、能進行關系對象的映射 B、具有控制器功能 C

14、、能在服務器端保存客戶端狀態(tài) D、向DTO一項能傳遞數(shù)據(jù) 參考答案: A 24、 已知某個實例的持久化標識,可以使用Session的( )方法來獲取它 A、load() B、loadAll() C、getAllData() D、init() 參考答案: A 25、 如果不確定所尋找對象的持久化標識符,則需要使用查詢,使用Session的( )方法 A、createQuery() B、query() C、queryAll() D、queryObject() 參考答案: A 26、 使用Session的( ),會把對象的狀態(tài)從數(shù)據(jù)庫中移除 A、delete() B、remove() C、clear

15、() D、removeAll() 參考答案: A 27、 對原生SQL查詢的控制是通過( )接口進行的 A、SQLQuery B、Session C、List D、Query 參考答案: A 28、 可以把結果集映射的信息放在外部的( )元素中,這樣就可以在多個命名查詢間或者通過setResultSetMapping()API來訪問 A、resultset B、result C、mapping D、description 參考答案: A 29、 使用Hibernate的QBC查詢,要使用SQL中的類似select count(*) from tablename方法求出記錄數(shù),必須使用( )類

16、A、Restrictions B、Projections C、Criteria D、Criteron 參考答案: B 30、 在Hibernate中,關于數(shù)據(jù)庫的方言,下面說法正確的是( ) A、可以不寫數(shù)據(jù)庫方言 B、數(shù)據(jù)庫方言沒有作用,可以隨便寫 C、有通用的數(shù)據(jù)庫方言可以使用 D、數(shù)據(jù)方言對應于每個數(shù)據(jù)庫,主要用于產(chǎn)生SQL語句 參考答案: D 31、 下面不屬于持久化的是( ) A、把對象轉(zhuǎn)換稱字符串的形式通過網(wǎng)絡傳輸,在另一端接收到這個字符串后能把對象還原出來 B、把程序數(shù)據(jù)從數(shù)據(jù)庫中讀出來 C、從XML配置文件中讀取程序的配置信息 D、把程序數(shù)據(jù)保存為文件 參考答案: A 32、

17、下面的程序執(zhí)行后沒有報錯,但數(shù)據(jù)總保存不到數(shù)據(jù)庫,最可能的原因是( ) public static void imain(String args) SessionFactory sf=new Configration().configure().buildSessionFactory(); Session session=sf.openSession(); Medal medal=new Medal(); medal.setOwner(“totong”); medal.setType(“Gold medal”); session.save(user); session.close(); A、配

18、置文件配置有誤 B、沒有在配置文件中包含對映射文件的聲明 C、配置文件配置有誤 D、沒有對持久化操作捕捉異常 E、沒有開啟事務 參考答案: E 33、 已知wage.getItem().size()的值是1。要想使執(zhí)行session.update(wage)時自動執(zhí)行session.update(wage.getItems().get(0),必須配置( ) A、set name=”items” inverse=”true” cascade=”none”/set B、set name=”items” inverse=”false” cascade=”none”/set C、set name=”i

19、tems” inverse=”true” cascade=”all”/set D、set name=”items” inverse=”false” cascade=”save-update”/set 參考答案: D 34、 在Hibernate關系映射配置中,inverse屬性的含義是( )。 A、定義在one-to-many節(jié)點上,聲明要負責關聯(lián)的維護 B、聲明在set節(jié)點上,聲明要對方負責關聯(lián)的維護 C、定義在one-to-many節(jié)點上,聲明對方要負責關聯(lián)的維護 D、聲明在set節(jié)點上,聲明要負責關聯(lián)的維護 參考答案: B 35、 執(zhí)行下面的hql查詢,關于返回值的說法,正確的是( )

20、select u.username,u.userid from com.scce.pojo.User u where u is not null A、語法錯誤,不能執(zhí)行 B、返回一個類型為List的實例 C、返回一個數(shù)組 D、當返回結果只有一條時,返回一個數(shù)組 參考答案: B 36、 以下哪一種檢索策略利用了外連結查詢( ) A、立即檢索 B、延遲檢索 C、迫切左外連結檢索 D、迫切右外連結檢索 參考答案: C 37、 POJO是( ) A、Plain Old Java Object B、Programming Object Java Object C、Page Old Java Object

21、 D、Plain Object Java Old 參考答案: A 38、 實現(xiàn)equals和hashCode最顯而易見的作用是( )詳解38 A、比較兩個對象標識符的值 B、比較數(shù)據(jù)庫的兩條數(shù)據(jù) C、比較兩個組建是否部署在同一個應用服務器上 D、對象與字段的映射 參考答案: A 39、 在源代碼中嵌入映射信息需要( ) A、XDoclet B、EJB C、Hibernate D、Spring 參考答案: A 40、 所有的Hibernate,除了( )都支持空(null)語義 A、Collection B、Element C、Entity D、NodeList 參考答案: A 41、 ( )元

22、素把子對象的一些元素與父類對應的表的一些字段映射起來 A、Component B、Element C、Attribute D、ActionForm 參考答案: A 42、 HQL不支持聚合函數(shù)有( ) A、count(*) B、avg() C、count() D、count(?) 參考答案: D 43、 假設實體映射時有一個( )的關聯(lián)指向另外一個實體,在查詢時必須也返回那個實體,否則會導致發(fā)生一個”column not found”的數(shù)據(jù)庫錯誤 A、many-to-one B、many-to-many C、one-to-many D、one-to-one 參考答案: D 44、 在Hiber

23、nate中,關于數(shù)據(jù)庫的方言,下面說法正確的是( ) A、可以不寫數(shù)據(jù)庫方言 B、數(shù)據(jù)庫方言沒有作用,可以隨便寫 C、有通用的數(shù)據(jù)庫方言可以使用 D、數(shù)據(jù)方言對應于每個數(shù)據(jù)庫,主要用于產(chǎn)生SQL語句 參考答案: D 45、 下列屬于多對一關系的是( ) A、書和作者 B、手機和生產(chǎn)廠家 C、用戶和發(fā)布的出租信息 D、士兵和班長 參考答案: D 二、多選題 (共5題,每題2分),說明:選擇多項正確的答案) 1、 從持久化狀態(tài)到臨時狀態(tài)轉(zhuǎn)換的方法有( )選三項 A、evict() B、clear() C、close() D、lock() 參考答案: ABC 2、 有如下代碼 Dept deptOn

24、e = new Dept(); deptOne.setDeptName(后勤部); deptOne.setCreateDate(2001-03-02); session.save(deptOne); Integer deptId = deptOne.getDeptId(); deptOne = null; 下面說明正確的有( )選兩項 A、deptOne處于生命周期 B、deptOne生命周期結束 C、deptOne處于持久化狀態(tài) D、deptOne處于游離狀態(tài) 參考答案: AC 3、 Hibernate緩存主要從哪些方面發(fā)生作用( )選兩項 見書P84 A、通過主鍵值加載數(shù)據(jù) B、查詢數(shù)據(jù)

25、C、立即加載 D、延遲加載 參考答案: AD 4、 什么是Hibernate一級緩存( )選兩項 A、Hibernate一級緩存是Session的緩存 B、Hibernate一級緩存是SessionFactory的緩存 C、第一級緩存為必需,不允許且事實上也無法被卸除 D、第一級緩存可以設置 參考答案: AC 5、 不適合放入Hibernate二級緩存的有( )選三項 A、常被修改的數(shù)據(jù) B、絕不容許出現(xiàn)并發(fā)的數(shù)據(jù),例如財務數(shù)據(jù) C、與其他應用共享的數(shù)據(jù) D、常用數(shù)據(jù) 參考答案: ABC詳解5Hibernate中dynamic-insert和dynamic-update 設置屬性默認值Hibe

26、rnate允許我們在映射文件里控制insert和update語句的內(nèi)容.比如在映射文件中property 元素中的update屬性設置成為false,那么這個字段,將不被包括在基本的update語句中,修改的時候,將不包括這個字段了.insert同理.dynamic動態(tài)SQL語句的配置也是很常用的.下面介紹配置SQL語句的具體屬性: 1)元素 insert屬性:設置為false,在insert語句中不包含這個字段,表示永遠不會被插入,默認true 2)元素 update屬性:設置為false,在update語句中不包含這個字段,表示永遠不會被修改,默認true 3)元素 mutable屬性:設

27、置為false就是把所有的元素的update屬性設置為了false,說明這個對象不會被更新,默認true 4)元素 dynamic-insert屬性:設置為true,表示insert對象的時候,生成動態(tài)的insert語句,如果這個字段的值是null就不會加入到insert語句當中.默認false 5)元素 dynamic-update屬性,設置為true,表示update對象的時候,生成動態(tài)的update語句,如果這個字段的值是null就不會被加入到update語句中,默認false 6)元素 dynamic-insert屬性:設置為true,表示把所有的元素的dynamic-insert屬性

28、設置為true,默認false 7)元素 dynamic-update屬性:設置為true,表示把所有的元素的dynamic-update屬性設置為true,默認false Hibernate生成動態(tài)SQL語句的消耗的系統(tǒng)資源(比如CPU,內(nèi)存等)是很小的,所以不會影響到系統(tǒng)的性能,如果表中包含N多字段,建議把dynamic-update屬性和insert屬性設置為true,這樣在插入和修改數(shù)據(jù)的時候,語句中只包括要插入或者修改的字段.可以節(jié)省SQL語句的執(zhí)行時間,提高程序的運行效率.詳解10現(xiàn)實中,很多朋友對兩種session bean存在誤解,認為有狀態(tài)是實例一直存在,保存每次調(diào)用后的狀態(tài)

29、,并對下一次調(diào)用起作用,而認為無狀態(tài)是每次調(diào)用實例化一次,不保留用戶信息。仔細分析并用實踐檢驗后,你會發(fā)現(xiàn),事實恰好相反: 有狀態(tài)和無狀態(tài)會話bean的本質(zhì)區(qū)別是它們的生命期。 首先解釋一個下面要用到的概念用戶:session bean 的用戶實際上就是直接調(diào)用ejb的類的實例,甚至是這個實例的某個方法。同一個類的不同實例對于session bean 來說是不同的用戶。 有狀態(tài)會話bean :每個用戶有自己特有的一個實例,在用戶的生存期內(nèi),bean保持了用戶的信息,即“有狀態(tài)”;一旦用戶滅亡(調(diào)用結束或?qū)嵗Y束),bean的生命期也告結束。即每個用戶最初都會得到一個初始的bean。 無狀態(tài)會話

30、bean :bean一旦實例化就被加進會話池中,各個用戶都可以共用。即使用戶已經(jīng)消亡,bean 的生命期也不一定結束,它可能依然存在于會話池中,供其他用戶調(diào)用。由于沒有特定的用戶,那么也就不能保持某一用戶的狀態(tài),所以叫無狀態(tài)bean。但無狀態(tài)會話bean 并非沒有狀態(tài),如果它有自己的屬性(變量),那么這些變量就會受到所有調(diào)用它的用戶的影響,這是在實際應用中必須注意的。詳解20Hibernate 提供了 3 種檢索策略:l 延遲檢索;l 立即檢索;l 迫切左外連接;Hibernate 提供 2 種方式來確定檢索策略,一中是在配置文件當中,另外一種是在程序種設置。當然,如果你在程序中設置了檢索策略

31、,那么你在配置文件中的設置也就無效了。另外的一種情況是 HQL 會忽略配置文件的設置,而總是采用迫切左外連接。詳解38原因是由于在Hibernate中,需要保證持久化標識(數(shù)據(jù)庫的行)和僅在特定會話范圍內(nèi)的Java標識是等值的。我們必然希望Set有明確的語義,以避免混合了來自不同會話中獲取的實例,從而確保數(shù)據(jù)的持久化不會發(fā)生錯誤。若使用過Set,你會知道Set中是不允許存儲重復值的,這也是為什么Hibernate推薦在多表關聯(lián)的映射中采用Set作為存儲實體對象的主要原因。詳解31明確inverse和cascade的作用inverse 決定是否把對對象中集合的改動反映到數(shù)據(jù)庫中,所以inverse只對集合起作用,也就是只對one-to-many或many-to-many有效(因 為只有這兩種關聯(lián)關系包含集合,而o

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論