freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

hibernate面試題-wenkub

2023-01-29 21:14:32 本頁(yè)面
 

【正文】 是因?yàn)橛腥伺u(píng)Hibernate而感到不快,而是因?yàn)樘永锩娴挠^點(diǎn)實(shí)在讓我覺(jué)得荒謬。,從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。hibernate是個(gè)輕量級(jí)的持久性框架,功 能卻非常豐富。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序?qū)嵱?,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。它支持各種關(guān)系數(shù)據(jù)庫(kù),從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。2). Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。2)區(qū)別: 當(dāng)數(shù)據(jù)庫(kù)中不存在與OID對(duì)應(yīng)的記錄時(shí),load()方法會(huì)拋出ObjectNotFoundException異常,而get()方法會(huì)返回null。它支持各種關(guān)系數(shù)據(jù)庫(kù),從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。 2). Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的簡(jiǎn)化DAO層的編碼工作 3). hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來(lái)實(shí)現(xiàn)透明性。 2.Hibernate是如何延遲加載? 1). Hibernate2延遲加載實(shí)現(xiàn):a)實(shí)體對(duì)象 b)集合(Collection) 2). Hibernate3 提供了屬性的延遲加載功能 當(dāng)Hibernate在查詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒(méi)有存在與內(nèi)存中,當(dāng)程序真正對(duì)數(shù)據(jù)的操作時(shí),對(duì)象才存在與內(nèi)存中,就實(shí)現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。3)兩者采用的延遲策略不同: 默認(rèn)情況下,load()方法采用延遲檢索策略()(Hibernate不會(huì)執(zhí)行select語(yǔ)句,金返回實(shí)體類的代理類實(shí)例,占用內(nèi)存很少);而get()采用立即檢索策略(Hibernate會(huì)立即執(zhí)行select語(yǔ)句)4)使用場(chǎng)合: 如果加載一個(gè)對(duì)象的目的是為了訪問(wèn)他的各個(gè)屬性,可以get()。他很大程度的簡(jiǎn)化DAO層的編碼工作3). hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來(lái)實(shí)現(xiàn)透明性。9.Hibernate是如何延遲加載? 1. Hibernate2延遲加載實(shí)現(xiàn):a)實(shí)體對(duì)象 b)集合(Collection)2. Hibernate3 提供了屬性的延遲加載功能當(dāng)Hibernate在查詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒(méi)有存在與內(nèi)存中,當(dāng)程序真正對(duì)數(shù)據(jù)的操作時(shí),對(duì)象才存在與內(nèi)存中,就實(shí)現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。大多數(shù)開發(fā)機(jī)構(gòu)經(jīng)常采取創(chuàng)建各自獨(dú)立的數(shù)據(jù)持久層。優(yōu)點(diǎn): 使用 Java 反射機(jī)制而不是字節(jié)碼增強(qiáng)程序來(lái)實(shí)現(xiàn)透明性。缺點(diǎn):它限制您所使用的對(duì)象模型。不管覺(jué)得 Hibernate好也吧,不好也吧,我唯一覺(jué)得遺憾的是,在中文論壇里面找不到一個(gè)對(duì)Hibernate的真正高水平的評(píng)價(jià)。從這個(gè)意義上來(lái)說(shuō),Hibernate和EB不是一個(gè)范疇的東西,也不存在非此即彼的關(guān)系。2)、運(yùn)行效率:如果JDBC的代碼寫的非常優(yōu)化,那么JDBC架構(gòu)運(yùn)行效率最高,但是實(shí)際項(xiàng)目中,這一點(diǎn)幾乎做不到,這需要程序員非常精通JDBC,運(yùn)用 Batch語(yǔ)句,調(diào)整PreapredStatement的Batch Size和Fetch Size等參數(shù),以及在必要的情況下采用結(jié)果集cache等等。3)、開發(fā)效率:在有JBuilder的支持下以及簡(jiǎn)單的項(xiàng)目,EB架構(gòu)開發(fā)效率最高,JDBC次之,Hibernate最差。所以難在你需要學(xué)習(xí)很多EJB設(shè)計(jì)模式來(lái)避開性能問(wèn)題,需 要學(xué)習(xí)App Server和EB的配置來(lái)優(yōu)化EB的運(yùn)行效率。Hibernate相反,它太靈活了,相同的問(wèn)題,你至少可以設(shè)計(jì)出十幾種方案來(lái)解決,所以特別的犯難,究竟用這個(gè),還是用那個(gè)呢?這些方案之間到底有什 么區(qū)別呢?他們的運(yùn)行原理有什么不同?運(yùn)行效率哪個(gè)比較好?光是主鍵生成,就有七八種方案供你選擇,你為難不為難?集合屬性可以用Set,可以用 List,還可以用Bag,到底哪個(gè)效率高,你為難不為難?查詢可以用iterator,可以用list,哪個(gè)好,有什么區(qū)別?你為難不為難?復(fù)合主鍵你 可以直接在hbm里面配置,也可以自定義CustomerType,哪種比較好些?你為難不為難?對(duì)于一個(gè)表,你可以選擇單一映射一個(gè)對(duì)象,也可以映射成 父子對(duì)象,還可以映射成兩個(gè)1:1的對(duì)象,在什么情況下用哪種方案比較好,你為難不為難?這個(gè)列表可以一直開列下去,直到你不想再看下去為止。瞬時(shí)對(duì)象不會(huì)被持久化到數(shù)據(jù)庫(kù)中,也不會(huì)被賦予持久化標(biāo)示符(identifier).如果瞬時(shí)對(duì)象在程序中沒(méi)有被引用,他會(huì)被垃圾回收器回收,使用Hibernate Session可以將其持久化 .通過(guò)save() ,saveOrUpdate() ,persist(),merge() 的方法將瞬時(shí)對(duì)象變?yōu)槌志没癄顟B(tài) .通過(guò)get(),load(),(),(),(),(),(),方法將一個(gè)對(duì)象變?yōu)槌志没瘜?duì)象2)持久化狀態(tài)(persistent):持久化的實(shí)例在數(shù)據(jù)庫(kù)中有對(duì)應(yīng)的記錄,它存在于相關(guān)聯(lián)的Hibernate Session范圍內(nèi),即加入到Session的緩存中。值得注意的是刪除的是對(duì)象標(biāo)示存在但在一般情況下,應(yīng)用程序不該在使用被刪除的對(duì)象?答:1)清理緩存是是指Session按照緩存中庫(kù)對(duì)象的屬性變化來(lái)同步更新數(shù)據(jù)庫(kù)。此時(shí)的清理緩存(此時(shí)緩存中的數(shù)據(jù)并不丟失)操作,讓緩存和數(shù)據(jù)庫(kù)同步執(zhí)行一些sql語(yǔ)句,但不提交事務(wù)。vikt]驅(qū)逐)(Object obj):把某個(gè)持久化對(duì)象從Session的緩存中清空,該方法在兩個(gè)情況下適用,一是特定的操作(如批處理),需要及時(shí)釋放對(duì)象占用的內(nèi)存,二是不希望當(dāng)前的Session繼續(xù)運(yùn)用此對(duì)象的狀態(tài)變化來(lái)同步更新數(shù)據(jù)庫(kù)。配置我文件如下: class name=Person table=TB_PERSONS id name=id type= column name=PERSON_ID / generator class=native/ /id ........... joinedsubclass name=Employee table=TB_EMPLOYEES key column=PERSON_ID/ property name=salary column=EMPLOYEE_SALARY type=big_decimal precision=6 scale=1/ /joinedsubclass joinedsubclass name=Customer table=TB_CUSTOMERS key column=PERSON_ID/ property name=level column=CUSTOMER_LEVEL notnull=true/ /joinedsubclass /class(3)繼承關(guān)系中的每個(gè)具體類對(duì)應(yīng)一張表:將域模型中的每一個(gè)實(shí)體對(duì)象映射到一個(gè)獨(dú)立的表中,也就是不用再關(guān)系數(shù)據(jù)模型中考慮模型的繼承和多態(tài)(在具體類對(duì)應(yīng)的表中,不僅包含和具體類屬性對(duì)應(yīng)的字段,還包括與具體類的父類屬性對(duì)應(yīng)的字段。*.Session實(shí)例是輕量級(jí)的,所謂輕量級(jí)是指它的創(chuàng)建和銷毀不需要消耗太多的資源。軟件開發(fā)人員可以獨(dú)立設(shè)計(jì)域模型,不必強(qiáng)迫遵守任何規(guī)范。在依賴數(shù)據(jù)庫(kù)產(chǎn)生主鍵的情況下會(huì)立即發(fā)送SQL語(yǔ)句訪問(wèn)數(shù)據(jù)庫(kù),目的是確保為持久化對(duì)象的ID賦值,而非數(shù)據(jù)庫(kù)產(chǎn)生主鍵方式,是到清理緩存時(shí)才發(fā)送SQL語(yǔ)句 persist()和save()方法類似,hibernate3才出現(xiàn)區(qū)別: save()方法會(huì)返回對(duì)象的ID,而persist()方法會(huì)什么都不返回 如果在事務(wù)邊界以外調(diào)用persist()方法,那么該方法不會(huì)執(zhí)行insert語(yǔ)句,這可以提高負(fù)責(zé)長(zhǎng)時(shí)間運(yùn)行事務(wù)的程序的健壯性。當(dāng)緩存中持久化對(duì)象的狀態(tài)發(fā)
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1