自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【編輯推薦】

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

2009-09-28 13:33:48

Hibernate訪問

2009-10-13 17:31:50

VB.NET Acce

2009-06-24 07:53:47

Hibernate數(shù)據(jù)

2009-09-22 14:52:55

Hibernate p

2009-06-24 07:58:52

Hibernate多數(shù)

2009-09-14 15:37:06

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

2009-06-24 07:55:36

Hibernate不同SQL方言

2009-09-25 15:15:54

Hibernate檢索

2009-09-24 09:25:10

Hibernate批量

2009-09-22 13:31:28

Hibernate C

2009-09-28 15:24:38

Hibernate V

2009-09-21 16:56:14

Hibernateibatis

2009-09-28 17:27:27

Hibernate A

2009-09-29 16:29:40

Hibernate查詢

2009-09-22 17:55:51

Spring Hibe

2009-09-24 14:12:22

Hibernate數(shù)據(jù)

2009-09-22 09:31:15

Hibernate主鍵

2009-09-27 14:33:01

Hibernate批量

2009-09-15 09:50:07

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

2009-09-28 09:56:53

Hibernate屬性
點贊
收藏

51CTO技術棧公眾號