java基礎、面試等練習hibernate-綜合測試_第1頁
java基礎、面試等練習hibernate-綜合測試_第2頁
java基礎、面試等練習hibernate-綜合測試_第3頁
java基礎、面試等練習hibernate-綜合測試_第4頁
java基礎、面試等練習hibernate-綜合測試_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

一、選擇題2SessionFactory?(多選)BC 源源,3SessionABCDF4Hibernate 7SessionFactory的說法哪些正確?(多選)BCA)SessionFactory對象 源SessionFactory是重量級的對象,不應該隨意創(chuàng)建。如果系統(tǒng)中只有一個數據庫 SessionFactoryload()8、CustomerSetordersOrder <set>B)<one-to-many>C)<many-to-one>9、<set>元素有一個cascade屬性,如果希望Hibernate級存集合中的對象,casecade none不級聯,是默認的)10、以下哪些屬于Session的方法? 11、以下程序的打印結果是什么?(單選)Ctx=session.beginTransaction();12、以下程序代碼對Customer的name屬性修改了兩次: tx=session.beginTransaction();new執(zhí)行以上程序,Hibernateupdate語句?(單選 13、在持久化層,對象分為哪些狀態(tài)?(多選)ACD14、對于以下程序,Customer對象在第幾行變?yōu)槌志没癄顟B(tài)?(單選) Customercustomer=newCustomer();//line1Sessionsession1=sessionFactory.openSession();//line3Transactiontx1=session1.beginTransaction();//line4session1.save(customer);//line4mit();//line5session1.close();//line6line1B)line2C)line3D)line4E)line515、對于以下程序,Customer對象在第幾行變?yōu)橛坞x狀態(tài)?(單選) Customercustomer=newCustomer();//line1Sessionsession1=sessionFactory.openSession();//line3Transactiontx1=session1.beginTransaction();//line4session1.save(customer);//line4mit();//line5session1.close();//line6line1B)line2C)line3D)line4E)line5 立即檢索B)延遲檢索C)迫切左外連結檢索D)17、假設對Customer類的orders集合采用延遲檢索策略,編譯或運行以下程序,會出現 tx=session.beginTransaction(); tor B)C)18HQLSQL,以下哪些說法正確?(多選)B)HQL面向對象,而 B)HQL面向對象,而 關系數據HQLSQLselect,insert,update,deleteHQLinsert,updatedelete19、事務級別是由誰實現的?(單選 Java應用程序 C)數據庫系統(tǒng)D)JDBC驅動程20、悲觀鎖與樂觀鎖,哪個具有較好的并發(fā)性能?(單選)B)二、簡答題1、什么答:對象關系映射(Object—RelationalMap,簡稱ORM)是一種為了解是通過使用描述對象和數據庫之間映射的元數據,將java序中的對象自動持久化到關系數據庫中;本質上就是將數據從一種形式轉換到另外一種形式2、解釋數據持久化的好處 3、Hibernate有哪5個接口?它們的作用分別是什么答:1)Configuration接口:配置Hibernate,根據其啟動hibernate,創(chuàng)建SessionFactory對象;2SessionFactoryHibernate據源的創(chuàng)建session對象sessionFactory是線程安全的意味著3Sessionsession4Transaction務;5)Query和Criteria接口:執(zhí)行數據庫的查詢。4、hierbnategetload有什么區(qū)別實它們也沒有什么不同的用其實都是一樣的,但是有一定的區(qū)別,get是每次都會從數據庫取數據以保證數據的可靠性,而load會返回,相當于是一個存根,它的值會去hibernatesession的二級緩存里去找,如果找不到目則會laxyload一下,簡單來說,用get的時候,當為空的時候不會拋出異常,反之load會拋.如果未能發(fā)現符合條件的記錄,get方法返回null,而load方拋出一個緩存,直接調用SQL完成數據。5、回答以下問在hibernate中,在配置文件中顯示一對多,多對多的是什么?一對多的為<one-to-many>;多對多的為<many-to-many>;2)Hibernate的二級緩存是什么?是SessionFactory的緩存為hibernate的二級緩存,即會話工廠對象。根據配置對象傳遞來的數據庫連接信息,創(chuàng)建session連接對象,這樣執(zhí)行的就是二級緩存應用及緩分布式緩3)HibernateHibernate事務實際上是底層的JDBCTransaction封裝或者JTATransaction封裝;默認情況下使用JDBCTransaction6、編寫一個Hibernate的測試文件Test.Java(用代碼寫出大概流程答://首先獲得SessionFactory對SessionFactorysessionFactorynewConfiguration().configure().//然后獲得session對Sessionsession=//其次獲得Transaction對Transactiontx=session.save(user);增加userUser的對象session.delete(user);//刪除session.update(user);//更新Queryquerysession.createQuery(“fromUser查Listlist=//提交事7、完成對hibernate.cfg.xml的配置,連接本地的oracle數據要求如下:數據庫名是WISH,要求能在控制臺顯示sql語句,Parent.hbm.xmlhibernate.cfg.xml文件同一個下的example的用戶名是:System:Manager。<hibernate-<session-<propertyoracle.jdbc.driver.OracleDriver<property jdbc:oracle:thin:@localhost:1521:orcl_<propertyname=”connection.username”>_System<propertyname=”connection.password”> Manager

<property <mapresource=example/Parent.hbm.xml></map</session-</hibernate-<session-<propertyname="dialect">(dialect:方言<propertyname="connection.url"><property<property<propertyname="connection.driver_class"><property<mapresource="com/hygj/bean/Student.hbm.xml"<mapresource="com/hygj/bean/Banji.hbm.xml"</session-messageididtitlehitsCreatetablemessage(idnumber(4)notnull,titlevarchar2(50)notnull,hitsnumber(10)notnull);Insertintomessagevalues100SelecttitlefrommessagewherecatDeletefrommessagewheretitle=’cat’;9、Hibernate作原理及為什么要用?原理并解析配置文并解析映射信息,創(chuàng)建創(chuàng)建事持久化操提交事為什么要用對JDBC數據庫的代碼做了封裝大大簡化了數據層繁瑣Hibernate是一個基于JDBCORM實現。他很大程度的簡化DAO層的編碼工hibernateJava反射機制而不是字節(jié)碼增強程序來實現透明10、Hibernate是如何延遲加Hibernate2延遲加載實現:a)實體對象b)集合Hibernate3提供了屬性的延遲加載功當Hibernate在查詢數據的時候,數據并沒有存在與內存中,當程序真正對數11、Hibernate中怎樣實現類之間的關系?(如:一對多、多對多的關類與類之間的關系主要體現在表與表之間的關系進行操作它們都市對對進行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件one-to-one、one-to-many、many-to-one、many-to-many12Hibernate的緩存機內部緩存存在Hibernate中又叫一級緩存,屬于應用事物級緩二級緩存應用及緩分布式緩條件數據不會被第修改數據大小在可接受范圍數據更新頻率低同一數據被系統(tǒng)頻繁使用、非關鍵數據第緩存的實hibernate的緩存前在Hibernate的處理中,由于使用的手動事務工作,所以,大量的數據就會存hibernate的緩存的分A:一級緩session,所有的數據處理,都是在session緩存上實現的。session實質上就是根據當前用戶請求線程,分配的緩存空間。由于session身是線程不安全的,所以默認的和當前線程進行了綁定,保證了session的安全B:二級緩sessionFactory,能被所有的session對象共享的緩存區(qū)域sessionFactory是線程安全的,可以共享和調用C:第緩存插可以利用第的專業(yè)的緩存管理的插件對象實現自己的緩存的設置緩存的管頻繁被查詢的數不會反復被修改的數13Hibernate的查詢方式有幾、原生態(tài)SQL:通過createSQLQuery()對象發(fā)送語句、HQL(HibernateQueryLanguage)HQL又分為:標準的HQL和擴展的HQL。通過createQuery()對象發(fā)送語句、Criteria,objectcomptosition,通createCriteria()對象發(fā)送語句1、屬性查2、參數查詢、命名參數查3、關聯查4、分頁查5、統(tǒng)計函14何優(yōu)使向一對多關聯,不使用單向一對靈活使用單向一對多關不用一對一,用多對一取配置對象緩存,不使用集合緩一對多集合使用Bag,多對多集合使用繼承類使用顯式多表字段要少,表關聯不要怕多,有二級緩存撐在數據庫中條件查詢速度很慢的時候,如何優(yōu)建索減少表之間的關優(yōu)化sql,盡量讓sql很快定位數據,不要讓sql做全表查詢,應該走索引,簡化查詢字段,沒用的字段不要,已經對返回結果的控制,盡量返回少量數在hibernate中進行多表查詢,每個表中各取幾個字段,也就是說查詢出來的解決方案一,按照Object[]數據取出數據,然后自己組解決方案二,對每個表的bean寫構造函數,比如表一要查出field1,field2兩個字段,那么有一個構造函數就是Bean(type1filed1,type2field2),然hql里面就可以直接生成這個bean了。具體怎么用請看相關文檔,我說的不是很清楚*請你談談SSH?Struts是一個表示層框架,主要作用是界面展示,接收請求,分發(fā)請求在MVC框架中,Struts屬于VC層次,負責界面表現,負責MVC關系的分發(fā)Hibernate是一個持久層框架,它只負責與關系數據庫的操作Spring一個業(yè)務層框架,是一個整合的框架,能夠很好地黏合表示層與持久**hibernate 是什么,他們的相互關系是什么,重要的方法是什么Session如下方 *hibernate象的瞬時態(tài)(Transient)、持久態(tài)(Persistent)(Detached)PO(PersistenceObject),瞬時對象和脫管對象也稱為VO(ValueObject)。PersitentTransientTransientObjectException異Transient(瞬時)狀態(tài)的特在數據庫中沒有與之匹配的數沒有納入session的管可通sessionsave()或saveOrUpdate()方法將瞬時對象與數據庫相關聯,persistent狀態(tài)的對象在數據庫中有與之匹配的數納入session的管在清理緩存(臟數據檢查)的時候,會和數據庫同Detached(游離)狀態(tài)的特在數據庫中有與之匹配的數沒有納入session的管當與某持久對象關聯的session被關閉后,該持久對象轉變?yōu)橛坞x對象。當游離對象被重新關聯到session上時,并再次轉變成持久對象。游離對象和比瞬時對瞬時態(tài)典型體現newnewjavaeg.=new(”amigo”,“女如果沒有變量對該對象進行,它將被java虛擬機回收關系Hibernate可通過sessionsave()或saveOrUpdate()方法將瞬持久態(tài)典型體現:session.save(object)和session.saveOrUpdate(object)sessionclose()clear()、evict()之后,持久對象變成脫管對HIbernatesession脫管態(tài) 典型體現:session.delete(object)session本質上與瞬時對象相同,在沒有任何變量它時,JVM會在適當的時候將比瞬時對象多了一個數據庫記錄標識值。 DetachedObject(游離對象)有DetachedObject(游離對象)可以傳遞到任何層直到表現層而不是用任何DTO(DataTransferObjects).然后你還可以重新把游離對象賦給另外一個hibernate據表映射關系主要有什么類型?inverse=false主控方,外鍵是由它控制的inverse=true是被控方,外鍵與它沒關系要想實現主控方的控制必須將被控方作為主控方的屬主表刪從表lazy:延通過get可以取出對方的所有內Hibernate

溫馨提示

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

評論

0/150

提交評論