成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概括Hibernate數(shù)據(jù)庫(kù)連接

開(kāi)發(fā) 后端
這里介紹在DB Browser選擇好數(shù)據(jù)庫(kù)連接對(duì)象,并未更改Hibernate數(shù)據(jù)庫(kù)連接配置,這MyEclipse怎么這么蠢啊,不知道自動(dòng)更改Hibernate配置文件,手動(dòng)更改后調(diào)試運(yùn)行,這次應(yīng)該能OK了吧

Hibernate還是比較常用的,于是我研究了一下Hibernate數(shù)據(jù)庫(kù)連接,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。

最近在做一個(gè)JavaWeb程序,用MyEclipse開(kāi)發(fā),用Struts(*.do)做開(kāi)發(fā)框架,Hibernate做數(shù)據(jù)庫(kù)代理類,負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)的操作,維持?jǐn)?shù)據(jù)持久和數(shù)據(jù)訪問(wèn),Spring用來(lái)整和注入,哎,還用了Ajax,在Java中實(shí)現(xiàn)真他媽的讓人煩,什么Ajax,根本就是寫JS腳本嘛(不過(guò)本來(lái)也是,就是最原始的那種拉),自己手寫了JS腳本,好久沒(méi)寫過(guò)這么多了,也當(dāng)練習(xí)一下XMLHTTPRequest拉。

要是在.NET中那就方便多了,直接就拖AjaxControlToolkit控件,5個(gè)AJAX Extensions核心組件,還有幾十個(gè)ajax Toolkit控件,有兩邊對(duì)聯(lián)做廣告的,有做像Google智能提示的(說(shuō)到這個(gè),我做每回有一個(gè)問(wèn)題,就是在指定了返回記錄的Item每一行Css樣式之后,當(dāng)用鍵盤上下的方向鍵移動(dòng)所選條的時(shí)候,它就出現(xiàn)了腳本錯(cuò)誤,也不能用方向鍵移動(dòng)所選條了,我試過(guò)了,只要不設(shè)置class他就沒(méi)一點(diǎn)問(wèn)題,能正常移動(dòng)選擇和智能提示,但是不設(shè)置樣式那哪看得?

他默認(rèn)都是黑字白背景,不過(guò)不曉得是不是DIV層做的,我以前用返回<span style='color:red'>Jonllen</span>做測(cè)試, 他卻沒(méi)能返回Jonllen,然后我對(duì)他進(jìn)行Html編碼和反編碼都試過(guò)了,也不行,在頁(yè)面里面要是能得到顯示Html的效果(說(shuō)到這里我呀有要叉開(kāi)話題了,等后面講考試在說(shuō)了),要是這樣能行的話那也能設(shè)置它的Css style了,但是就是不行,不知道大家有沒(méi)有碰到我這種情況過(guò),還請(qǐng)知道的大蝦指點(diǎn))還有做瑣定凍結(jié)頁(yè)面做實(shí)現(xiàn)的,還有談出的等等...要什么有什么, 看你要實(shí)現(xiàn)什么功能了,但我覺(jué)得就是MS這些Ajax控件調(diào)用WebServer的太多了,就有時(shí)要新寫個(gè)WebMethod不習(xí)慣感覺(jué)麻煩了,不過(guò)這倒是順了Ajax的本質(zhì)咯,就是要回調(diào)WebServer的Xml,不過(guò)我覺(jué)得以前做的Ajax還可以,他沒(méi)有做成控件,只是要引用dll,回調(diào)的是一個(gè) Ajax方法,我以前在VS2003里用AjaxPro.dll,感覺(jué)還可以,雖然此方法有很多局限性,但用起來(lái)感覺(jué)挺方便的.MS真是夠人性化,Sun 也要學(xué)著點(diǎn)就好了,不過(guò)當(dāng)前Sun還是做好它的J2EE規(guī)范在說(shuō)吧。

剛開(kāi)始還可以,就是JS不好怎么調(diào)試,就只能做死了alert看執(zhí)行到了那一步,不一會(huì)兒JS搞定了,我在JS里面調(diào)用的open url是一個(gè)servlet類,然后在這里調(diào)用Hibernate對(duì)數(shù)據(jù)庫(kù)操作,以達(dá)到Ajax的異步處理,因?yàn)槲疫@個(gè)項(xiàng)目以前是連SQL Server 2000的,不過(guò)現(xiàn)在我要用MYSQL數(shù)據(jù)庫(kù)了,呵呵,免費(fèi)的那種,我就把以前工程里面的Hibernate要連SQL Server 2000的三個(gè)驅(qū)動(dòng)包給刪了,接著選擇DB Browser(數(shù)據(jù)庫(kù)瀏覽器)重新設(shè)置了Hibernate的數(shù)據(jù)連接,Edit更改端口,輸入數(shù)據(jù)庫(kù)口令,哦,還要添加一個(gè)MQSQL數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)連接包(jar文件),找啊找,在E盤,選擇,配置 OK,Next,F(xiàn)inish完成,Open Connection,一長(zhǎng)串進(jìn)度條到結(jié)尾后,OK連接成功了,一帆風(fēng)順,點(diǎn)開(kāi)一看幾個(gè)database下面幾個(gè)table都對(duì)數(shù),我刪掉了以前的工程底下hibr包下的一些數(shù)據(jù)映射對(duì)象和相應(yīng)的DAO數(shù)據(jù)訪問(wèn),然后Hibernate Reverse Engineering重新添加刪除的那些Hibernate數(shù)據(jù)庫(kù)映射對(duì)象,用assigned(有主鍵)的用assigned,用native(自動(dòng)增長(zhǎng)主鍵)用native,OK,Hibernate代理類搞定,現(xiàn)在只要看servlet里面,...DAO dao = new ...DAO()…對(duì)數(shù)據(jù)庫(kù)操作完成!

現(xiàn)在就看Ajax的了,它是如何的偉大,在不刷新的情況下異步的CallBack服務(wù)器,配置一下WebLogic,Redeploy重新部署,Run運(yùn)行,打開(kāi)Brower鍵如URL看效果咯,滿懷期待,想著:onclick提交,addshow()調(diào)用JS一個(gè)函數(shù),回發(fā)到服務(wù)器, 結(jié)果···返回的是一個(gè)alert('你所請(qǐng)求的頁(yè)面有異常'),呵呵~哎,為什么類?我關(guān)閉一下調(diào)試,在重新啟動(dòng)一下,還是提示有異常,為什么,為什么,為什么呢?

我認(rèn)真的檢查了我一下JS代碼,認(rèn)真的過(guò)了一遍JS里面的function,一個(gè)個(gè)檢查,定義XMLHttpRequest對(duì)象、 sendRequest(url)發(fā)送函數(shù)請(qǐng)求、processResponse()處理返回信息的函數(shù),等等...sendRequest(url)發(fā)送函數(shù)請(qǐng)求,對(duì)URL,應(yīng)該是這個(gè)問(wèn)題,我的url是"servlet/FindServlet?sn=" +ss;FindServlet是我工程ss包下面的FindServlet.java的servlet類,ss是在JS里面var的一個(gè)變量,在細(xì)想了一下,servlet/FindServlet?sn="+ss,不是ss/FindServlet?sn="+ss嗎?不是,后來(lái)也用ss也測(cè)試了一下,確實(shí)不是,那是什么問(wèn)題呢?難道問(wèn)題不是出在URL上面,url沒(méi)錯(cuò),想了一陣了,靈機(jī)一動(dòng),測(cè)試一下不就知道了嗎!

我連忙打開(kāi) FindServlet這個(gè)類,一時(shí)間還很狠啪著自己的后老勺:你真笨啊!進(jìn)入FindServlet,在doGet方法里邊String shen = request.getParameter("sn");System.out.println(shen);獲取sn查詢字符串(呵呵.NET學(xué)多了),然后再在控制臺(tái)輸出,保存運(yùn)行,哎,真的輸出了,控制臺(tái)里面輸出了"湖南",我sn查詢字符串的值,那這么來(lái)說(shuō),URL確實(shí)沒(méi)有問(wèn)題,它已經(jīng)把請(qǐng)求發(fā)送到我的這個(gè)FindServlet類里面來(lái)了,這里我已經(jīng)能接受到了,接著在FindServlet類往下看,在一些關(guān)鍵性的代碼后加上 System.out.println("變量值");我習(xí)慣性調(diào)試Java的方法,調(diào)試運(yùn)行,果然還沒(méi)有執(zhí)行完就報(bào)異常了,控制臺(tái)在輸出了DAO前面的變量值后后面的就都沒(méi)有輸出了,一定就是DAO的問(wèn)題了!

我把目光轉(zhuǎn)到DAO,第一行AddrtableDAO dao = new AddrtableDAO();就實(shí)例化絕對(duì)沒(méi)問(wèn)題List list = dao.findAll(shen);應(yīng)該問(wèn)題System.out.print(list。size());此行在控制臺(tái)沒(méi)有輸出結(jié)果,List list = dao.findAll(shen),findAll(shen)是按指定條件shen對(duì)數(shù)據(jù)庫(kù)執(zhí)行查詢返回List集合的方法,就是這句對(duì)數(shù)據(jù)庫(kù)查詢有問(wèn)題了(一時(shí)間感覺(jué)自己真的了不起,我這個(gè)人比容易較驕傲自滿,我自己都受不了自己了),馬上寫了一個(gè)static void main()方法測(cè)試,果然是Hibernate代理數(shù)據(jù)庫(kù)操作類出現(xiàn)了問(wèn)提,提示Can not Connection不能連接,為什么類?

連不上,我明明在DB Browser里配置好了連MySQl的設(shè)置,在那里連上了啊,還可以看到數(shù)據(jù)庫(kù)和表啊,怎么建的Hibernate數(shù)據(jù)庫(kù)代理類就連不上了類,我馬上轉(zhuǎn)到了hibernate。cfg.xml Hibernate配置文件,一看,暈了,怎么在配置文件里面用的還是以前的那個(gè)的配置設(shè)置,我不是改成MySql了嗎,我知道了,你在DB Browser選擇好數(shù)據(jù)庫(kù)連接對(duì)象,并未更改Hibernate數(shù)據(jù)庫(kù)連接配置,暈了,這MyEclipse怎么這么蠢啊,不知道自動(dòng)更改Hibernate配置文件,唉癡哦,手動(dòng)更改后調(diào)試運(yùn)行,心想這次應(yīng)該能OK了吧,但結(jié)果總是出現(xiàn)意外,老和所想的背道而馳的,有出西西了,一長(zhǎng)串異常:什么Error Creating SessionFactory等一大片英文,搞得我頭都大了,點(diǎn)異常進(jìn)去看,就是到了那些Hibernate那些砸七砸八的那些包的原類型里了,一個(gè)個(gè)類N多代碼,看得真叫人煩拉,想起就郁悶,這MyEclipse調(diào)試可真JB麻煩,又全英文版的(想起.NET中調(diào)試,哎```個(gè)人覺(jué)得Java中就是jar包太繁多了,而一些重要的設(shè)置都保存在Xml的配置文件里面,感覺(jué)喜歡拿xml配置文件出氣!

如頁(yè)面導(dǎo)航等, 但內(nèi)容多了就顯得繁雜了,就只能手動(dòng)修改Source了),心里直罵Java垃圾,不禁雙手抱著后老勺往后仰,看這天花板郁悶ING。

回下頭來(lái)看到了這 MyEclipse工具,蔑視了工程一下,回到電腦面前,看啊看,順眼看了這些砸七砸八的包,哎,似乎少了什么東西,憑直覺(jué)我又過(guò)了那些jar包文件一便,細(xì)想了一翻,又仔細(xì)看了那些包一遍,我的MySql數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包文件類!怎么沒(méi)有呢?我再Refresh一下還是沒(méi)有看到啊!拐了,我雖然刪除了以前連Sql Server 2000的3個(gè)包,但是怎么MySql的包怎么沒(méi)有導(dǎo)進(jìn)來(lái)呢?

第一時(shí)間問(wèn)為什么?難道又是DB Browser的問(wèn)題,你在那里選擇Add JARS選擇是驅(qū)動(dòng)包文件是用的磁盤物理路徑,也就是說(shuō)他沒(méi)有自動(dòng)把你所選擇的包自動(dòng)加在到你的工程里面進(jìn)來(lái)了,該死的DB Browser,害得我Hibernate老是連不上,這個(gè)問(wèn)題好象只在你以前用一個(gè)數(shù)據(jù)源現(xiàn)在又換掉一個(gè)新的Hibernate數(shù)據(jù)庫(kù)連接時(shí)才有,我打工程文件所在目錄,進(jìn)入WebRoot\WEB-INF\lib 目錄,手動(dòng)將我E盤底下個(gè)那個(gè)MySQL數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)Jar包Copy到這個(gè)目錄下,再在工程里面Refresh一下,MySql包就出來(lái)了,運(yùn)行 WebLogic打開(kāi)瀏覽器,onclick,啊````終于出來(lái)了,通過(guò)JS查詢到數(shù)據(jù)庫(kù)服務(wù)器里面的數(shù)據(jù)了。

我在Java中實(shí)現(xiàn)Ajax就這樣成功了!你們看了我寫了這么多覺(jué)得好不好笑啊,是不是感覺(jué)我是垃圾啊,菜鳥(niǎo)一個(gè),我的確也是菜鳥(niǎo),本來(lái)就是,要是高手的話可能一看就知道錯(cuò)誤出在那里了,就不會(huì)想我這樣折騰了吧!是不是我說(shuō)了一些Java很低級(jí)的常識(shí)類?而我自己卻不清白類!希望大家莫見(jiàn)笑我了,第一次寫這些Hibernate知識(shí),我犯的一些錯(cuò)誤,應(yīng)該大家有些Java的朋友在些Hibernate的時(shí)候沒(méi)出現(xiàn)過(guò)我這樣的問(wèn)題吧,其實(shí)我對(duì)Java是比較感興趣的,但是由于我所學(xué)的Java的知識(shí)太少,對(duì)有一點(diǎn)難的就不知道做了,那是因?yàn)槲覀€(gè)人學(xué)的 Java太膚淺的原因,我知道其實(shí)在.NET中實(shí)現(xiàn)在在Java里基本上可以實(shí)現(xiàn)的,只不過(guò)可能比在.NET中實(shí)現(xiàn)難一點(diǎn)而已吧。在網(wǎng)上看到有很多朋友有拿過(guò)JAVA的Hibernate和.NET中的ADO.NET進(jìn)行比較,也有很多人說(shuō)兩著不能進(jìn)行相比,就像SQL語(yǔ)句不能和存儲(chǔ)過(guò)程進(jìn)行相比一樣,只要能在恰當(dāng)?shù)臅r(shí)候用就是好的,我都很認(rèn)同的他們的觀點(diǎn)和看法,而我個(gè)人認(rèn)為呢,只要有自己的對(duì)事物認(rèn)識(shí)的觀點(diǎn)就是好的。

我是一個(gè)比較愛(ài)說(shuō)的人,我覺(jué)得你只要能認(rèn)真的去思考分析一件事物,不管你得到的結(jié)論是怎么樣的,旨在在這個(gè)過(guò)程你從中是否學(xué)到了一些東西,我不喜歡那些平時(shí)不愛(ài)說(shuō)話的, 因?yàn)槟菚r(shí)候我們不知道他對(duì)這個(gè)事物的看法是怎樣的,也難以猜測(cè)他心里到底在想什么。既然上面有說(shuō)到Hibernate和ADO.NET,所以我又加上了這一段羅嗦起來(lái)了,呵呵,就我這皮毛也當(dāng)回顧我以前一些知識(shí),談不上總結(jié)也算小記一翻,希望高手們別笑話我們這些新手了,下面就我所了解的Hibernate和ADO.NET比較如下:在Hibernate中,首先我們需要在JAVA工程里面添加Hibernate標(biāo)簽庫(kù)(我用的是Hibernate 3.1 Core Libraries)的引用,在.NET中我覺(jué)得就是using、import名稱空間SqlClient、OleDb添加程序集的過(guò)程,然后我們需要打開(kāi)DB Brower建立數(shù)據(jù)庫(kù)連接字符串,就是打服務(wù)器名用戶名密碼等,然后Hibernate數(shù)據(jù)庫(kù)連接信息保存在hibernate。cfg.xml(默認(rèn)缺省)這一個(gè)xml文件中,在連接數(shù)據(jù)庫(kù)的時(shí)候值得一提的是需要數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)包,不同的數(shù)據(jù)庫(kù)有不同的驅(qū)動(dòng)包,個(gè)人覺(jué)得不同的驅(qū)動(dòng)包作用在與,由于不同數(shù)據(jù)庫(kù)用的可能的是不同連接操作方式,如Oracle是表空間的形式存在數(shù)據(jù)庫(kù)等,而其他的可能略有不同。

正確配置好連接成功后,我們就能在DB Brower里看到數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)應(yīng)的表了,在你連接數(shù)據(jù)庫(kù)前添加Hibernate時(shí)它會(huì)叫你選擇包,添加后包下面就會(huì)多3個(gè)類了,IBaseHibernateDAO、BaseHibernateDAO、HibernateSessionfactory 從名字就可以看出來(lái)就是一個(gè)接口、一個(gè)接口實(shí)現(xiàn)類(implements)、一個(gè)工廠,具體里面是如何實(shí)現(xiàn)的以及其原理機(jī)制我此小輩能講清楚的,我還是有自知知明的,等下甭被我的這點(diǎn)Java皮毛知識(shí)給歪曲了那就不好了,不過(guò)我看里面的代碼也很少簡(jiǎn)單,要理解起來(lái)也不難,反正就創(chuàng)建了這3個(gè)類,然后我就需要在DB Brower里面選擇相應(yīng)的表Hibernate Reverse Engineering添加對(duì)應(yīng)DAO和Model,Model就是數(shù)據(jù)庫(kù)表對(duì)象映射實(shí)例,數(shù)據(jù)庫(kù)表的每一列充當(dāng)Model類的屬性字段,并添加有 get、set規(guī)則的屬性訪問(wèn)器,而DAO類里面則封裝的是對(duì)該表的一些常見(jiàn)的數(shù)據(jù)訪問(wèn)操作(insert、delete、update、 select),它有自己的HibernateSQL語(yǔ)句(不是一般的sql語(yǔ)句),這一塊我手動(dòng)寫得很少,不過(guò)和一般的sql語(yǔ)句語(yǔ)法還是很相似, 如有按屬性名查詢返回Model強(qiáng)類型化List集合等,除此之外,每添加一個(gè)表還會(huì)自動(dòng)添加表名.hbm.xml文件,這個(gè)xml文件保存數(shù)據(jù)庫(kù)映射到Hibernate表字段的具體信息,如主鍵信息、列長(zhǎng)度相應(yīng)的Java類型等,要注意的是在添加的時(shí)候它會(huì)叫你選擇ID Generator表的信息,這里常見(jiàn)的是assigned(有表主鍵)和native(自動(dòng)增長(zhǎng)主鍵),因?yàn)樵诖艉髣?chuàng)建的時(shí)候它會(huì)根據(jù)你所選擇的信息創(chuàng)建不同的DAO和Model,如在構(gòu)造函數(shù)和一些數(shù)據(jù)訪問(wèn)的方法里面就可能有需要ID主鍵的,而對(duì)于自動(dòng)增長(zhǎng)的則無(wú)須輸入ID主鍵即可。

你可以對(duì)多個(gè)可能用的到表執(zhí)行上述Hibernate Reverse Engineering映射操作,你可以在不寫一局代碼的情況下完成對(duì)數(shù)據(jù)庫(kù)的大多數(shù)的一般操作在其他地方很方便的調(diào)用,我覺(jué)得這就是Hibernate的最大的好處優(yōu)點(diǎn);而在.NET中類,相對(duì)Hibernate來(lái)說(shuō)我想是一步一個(gè)腳印,什么DAO方法等代碼一行行寫,不過(guò)我覺(jué)得這樣也沒(méi)什么不好的,我們一般在項(xiàng)目中就用一個(gè)SqlHelper類,里面寫上對(duì)數(shù)據(jù)庫(kù)的一些增刪改查方法等。

根據(jù)傳來(lái)的SQL語(yǔ)句和參數(shù)組或存儲(chǔ)過(guò)程等動(dòng)態(tài)的返回?cái)?shù)據(jù)集合(List)或記錄數(shù)等,用起來(lái)也挺好的,頂多還對(duì)不同的實(shí)例添加對(duì)應(yīng)的DAL,這些基本上能滿足我們對(duì)數(shù)據(jù)庫(kù)的基本操作了。

不過(guò)我覺(jué)得在Java中這樣實(shí)現(xiàn)也可以啊,我以前就在Java里面寫了一個(gè)SqlHelper類代替了Hibernate,用的是JdbcOdbc數(shù)據(jù)庫(kù)連接,感覺(jué)也很實(shí)用,簡(jiǎn)單明了,但是Hibernate在一些性能等方面的優(yōu)勢(shì)我們上不容忽視的。

【編輯推薦】

  1. 簡(jiǎn)單描述Hibernate單元測(cè)試
  2. 概括Hibernate多表關(guān)聯(lián)查詢
  3. 淺談Hibernate Session Factory
  4. 淺析Hibernate加載配置文件
  5. 深入剖析Hibernate核心接口
責(zé)任編輯:佚名 來(lái)源: 博客園
相關(guān)推薦

2009-09-28 13:33:48

Hibernate訪問(wèn)

2009-10-13 17:31:50

VB.NET Acce

2009-09-22 14:52:55

Hibernate p

2009-06-24 07:53:47

Hibernate數(shù)據(jù)

2009-09-14 15:37:06

LINQ映射數(shù)據(jù)庫(kù)

2009-06-24 07:58:52

Hibernate多數(shù)

2009-09-21 16:56:14

Hibernateibatis

2009-09-28 15:24:38

Hibernate V

2009-09-28 17:27:27

Hibernate A

2009-09-24 09:25:10

Hibernate批量

2009-09-25 15:15:54

Hibernate檢索

2009-09-22 13:31:28

Hibernate C

2009-09-22 17:55:51

Spring Hibe

2009-09-29 16:29:40

Hibernate查詢

2009-06-24 07:55:36

Hibernate不同SQL方言

2009-09-22 09:31:15

Hibernate主鍵

2009-09-27 14:33:01

Hibernate批量

2009-09-28 09:56:53

Hibernate屬性

2009-09-15 09:50:07

Linq操作數(shù)據(jù)庫(kù)

2009-09-24 14:12:22

Hibernate數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99热精品在线观看 | 亚洲成人免费视频 | 蜜桃免费av| 日韩欧美亚洲 | 国产一区二区三区网站 | 欧美日韩高清在线一区 | 国产精品久久久久久久久久久久久 | 一区二区免费 | 日本黄色不卡视频 | 日韩精品 | 亚洲成人精品 | 久久精品91久久久久久再现 | 日操夜操| 日韩在线免费视频 | 日韩一区二区精品 | 亚洲天堂精品久久 | 欧美国产激情 | av一区在线观看 | 国产亚洲欧美在线视频 | 国产高清视频 | 久久99这里只有精品 | 日韩欧美中文字幕在线观看 | 亚洲欧洲日韩精品 中文字幕 | 欧美中文一区 | 久久九精品 | 黄网在线观看 | 网站黄色在线 | 日韩成年人视频在线 | 欧美一级毛片在线播放 | 午夜免费视频 | 97色伦网 | 99伊人 | av大片 | 黄色片免费看 | 91视频精选| 能看的av | 一区二区三区精品视频 | 国产精品一区二区久久 | 国产真实精品久久二三区 | 亚洲成人激情在线观看 | 成人国产精品久久 |