




已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
附錄C英文譯文在Eclipse中使用Hibernate摘要:最近我開始使用Eclipse作為我的開發(fā)環(huán)境,我開始研究其他人提供的對(duì)Eclipse的擴(kuò)展。例如,當(dāng)用到xml文件時(shí),我使用XMLBuddy插件.在這篇文章中,我們將探索其中之一:HibernateSynchronizer.。介紹最近我開始使用Eclipse作為我的開發(fā)環(huán)境,部分原因是因?yàn)樵谖疫M(jìn)行開發(fā)的許多平臺(tái)上都可以使用Eclipse來工作,還有部分原因是因?yàn)镋clipse是展示人人皆可作出貢獻(xiàn)的開放、可擴(kuò)展環(huán)境的優(yōu)勢(shì)的一個(gè)極好的例子。我開始研究其他人提供的對(duì)Eclipse的擴(kuò)展。例如,當(dāng)用到xml文件時(shí),我使用XMLBuddy插件。該插件對(duì)于我的工作很有助益。因?yàn)樽罱恢痹趯慏evelopersNotebook,所以我很想知道是不是已經(jīng)有人寫了關(guān)于Hibernate的插件,事實(shí)上,有好幾個(gè)這樣的插件正在開發(fā)。在這篇文章中,我們將探索其中之一:HibernateSynchronizer.HibernateSynchronizer在我找的和Hibernate有關(guān)的插件中,HibernateSynchronizer最令我感興趣,因?yàn)樗鼮槲以贒evelopersNotebook書中采用的以映射為中心的工作流(mapping-centricworkflow)提供了最好的支持。(可以用多種方法使用Hibernate,你可能會(huì)試試其它一些插件,它們提供的方法可能正是你自己特定環(huán)境所要求的)。事實(shí)上,當(dāng)使用HibernateSynchronizer時(shí),如果你改變了映射文件,你不需要為更新相應(yīng)的java文件而勞心費(fèi)神。當(dāng)你編輯映射文件時(shí),和Eclipse采取的方法類似,該插件自動(dòng)更新你的java代碼。還不止于此,還提供了比Hibernate內(nèi)建的代碼生成工具更多的功能:它為每個(gè)映射對(duì)象創(chuàng)建一對(duì)類(apairofclasses),其中一個(gè)是基礎(chǔ)類,當(dāng)你改變映射內(nèi)容時(shí),它可以隨意重寫這個(gè)類;另一個(gè)類作為該基礎(chǔ)類的子類,在子類中,你可以添加具體的商業(yè)邏輯和另一些代碼。使用這個(gè)插件生成java代碼時(shí),不用象使用Hibernate內(nèi)置的代碼生成工具那樣,擔(dān)心其它代碼(如商業(yè)邏輯的代碼)會(huì)在你的眼皮底下消失。對(duì)于以Hibernate影射文檔為基礎(chǔ)的方法,還有一些其它的好處,HibernateSynchronizer有一個(gè)新編輯器,當(dāng)編輯這類文件時(shí),為Eclipse添加了智能輔助和自動(dòng)完成功能。一個(gè)比較好的、以DTD驅(qū)動(dòng)的XML編輯器,如以前提及的XMLBuddy,也可以完成部分功能。與此相比,HibernateSynchronizer利用對(duì)影射文檔語義的了解,提供了更進(jìn)一步的功能。例如,提供了對(duì)屬性和影射關(guān)系的可視化顯示,創(chuàng)建新元素的向?qū)Ы缑?,象以上提及的一樣,缺省設(shè)置情況下,當(dāng)你編輯影射文檔時(shí),編輯器會(huì)自動(dòng)生成數(shù)據(jù)訪問類(data-accessclass).當(dāng)然還有其它一些功能,在Eclipse的新建(New)菜單中,提供了一個(gè)向?qū)?,可以用來?chuàng)建Hibernate配置文件和映射文件,在包資源瀏覽器(packageexplorer)和其它一些合適的地方增加了上下文菜單,方便調(diào)用和Hibernate相關(guān)的功能。好了,在這些抽象的描述之后,到了開始做實(shí)事的時(shí)候,當(dāng)然,這正是你興趣所在,不然你就不會(huì)讀這篇文章。怎么安裝和使用呢?下邊一一解釋。安裝HibernateSynchronizer可以用Eclipse內(nèi)置的更新管理器(UpdateManager)來安裝。對(duì)Eclipse2.1和即將發(fā)布的Eclipse3的用戶提供了不同的更新站點(diǎn)。(因?yàn)橛肊clipse作關(guān)鍵性的工作,我仍使用作為產(chǎn)品發(fā)行的2.1版。當(dāng)我寫這篇文章的時(shí)候,Eclipse3已經(jīng)進(jìn)入了“候選發(fā)布”階段。我希望當(dāng)我今夏晚些時(shí)候從JavaOne回來時(shí),我可以更新到版本3的產(chǎn)品發(fā)行版。提及這個(gè)的主要原因是因?yàn)槲蚁霃?qiáng)調(diào)一下,這些指南是以Eclipse2的角度的來講解,毫無疑問,一些命令和窗口會(huì)在版本3中發(fā)生變化,因此,當(dāng)你使用Eclipse3時(shí),你應(yīng)當(dāng)做一些相應(yīng)的調(diào)整。我印象中HibernateSynchronizer自己的installinstructions是針對(duì)Eclipse3,也許這對(duì)你有所幫助。啟動(dòng)Eclipse,順次單擊幫助(Help)-軟件更新(SoftwareUpdates)-更新管理器(UpdateManager)來打開更新管理器,當(dāng)安裝/更新(Install/Update)透視圖打開之后,在功能更新視圖(FeatureUpdates)中用右鍵單擊(如果你用的單鍵,你需要control-click)。選擇新建(New)-站點(diǎn)書簽(SiteBookmark)。在更新管理器中添加HibernateSynchronizer插件的更新地址在彈出對(duì)話框中,輸入適合你的Eclipse版本的插件地址:Eclipse2.1:/hibernatesync/eclipse2.1Eclipse3:/hibernatesync還需要為新建的書簽命名,HibernateSynchronizer就是個(gè)很貼切的名字。單擊完成(Finish)后,新建的書簽就會(huì)出現(xiàn)在功能更新(FeatureUpdates),實(shí)際安裝該插件,單擊該書簽左邊的三角形符號(hào),然后再次單擊在書簽下邊出現(xiàn)的條目左邊的三角形符號(hào),繼續(xù)這個(gè)過程,一直到書簽下邊出現(xiàn)的條目中出現(xiàn)該插件的圖標(biāo)。單擊該條目,就會(huì)出現(xiàn)一個(gè)可以讓你安裝的界面,單擊InstallNow,讓Eclipse引導(dǎo)你完成安裝許可協(xié)議,你可以看看下邊Trade-Offs部分對(duì)許可協(xié)議的一些討論。當(dāng)你打算在實(shí)際的項(xiàng)目中使用該插件時(shí),想必你會(huì)仔細(xì)研究該協(xié)議。我認(rèn)為也許好一點(diǎn),不過該插件基于GPL協(xié)議,而不是開放源代碼,令人迷惑。選擇安裝位置,缺省的已經(jīng)很好了。安裝沒有簽名插件時(shí)的標(biāo)準(zhǔn)警告?,F(xiàn)在已經(jīng)完成安裝,你需要退出,然后重新啟動(dòng)Eclipse以使所做的更改生效??瓷线叺膶?duì)話框好像說能夠自動(dòng)重新啟動(dòng)Eclipse。,以我的經(jīng)驗(yàn),Eclipse只會(huì)退出,還是需要你自己手工重新啟動(dòng)。這可能是MaxOSX平臺(tái)上Eclipse2.1的一個(gè)局限。Eclipse3已經(jīng)許諾把對(duì)OSX的支持列入第一級(jí)別。無論如何,這只是個(gè)小問題。如果你需要重新啟動(dòng)Eclipse,現(xiàn)在就可以這樣做。安裝完之后,接著需要對(duì)其對(duì)其進(jìn)行配置,以便在項(xiàng)目中使用。配置重新啟動(dòng)Eclipse后,關(guān)閉安裝/更新透視圖。打開一個(gè)使用Hibernate的Java工程.如果你已經(jīng)完成了DevelopersNotebook,一書中的例子,那么就有幾個(gè)目錄可供你選擇,這里以書中第三章中的例子來說明。第三章是可以在線免費(fèi)獲得的樣章,你還可以從該書的站點(diǎn)下載所有例子的源代碼。如果你打算使用其中的一個(gè)例子來新建一個(gè)Eclipse工程,選擇文件(File)-新建(New)-工程(Project),選定工程類型,然后單擊下一步(Next),填入該工程名(我填的是HibernateCh3,如圖11所示),不要復(fù)選使用缺省檢查框(Usedefault),這樣你可以告訴Eclipse從哪里找到已經(jīng)存在的工程目錄,單擊瀏覽按鈕(Browse)來定位目錄。選定工程目錄后可以單擊完成(Finish)來創(chuàng)建工程。不過,一般情況下我喜歡單擊下一步(Next)來復(fù)查Eclipse為此工程所作的設(shè)置(當(dāng)然,如果發(fā)現(xiàn)有些配置不對(duì),總是可以選擇回退來修改這些設(shè)置。不過,我總是發(fā)現(xiàn),如果有一個(gè)庫文件丟失或是其它一些原因,會(huì)有非常多的錯(cuò)誤和警告信息)。在當(dāng)前情況下,我的謹(jǐn)慎有點(diǎn)多余。Eclipse準(zhǔn)確的算出了目錄是如何組織以及是用來干什么的,找到我為使用Hibernate和HSQLDB數(shù)據(jù)庫而下載的第三方庫(下載和安裝的詳細(xì)過程可以參看書中第一章)。如此聰明的適應(yīng)能力是Eclipse優(yōu)點(diǎn)之一。圖12顯示新工程已經(jīng)打開,準(zhǔn)備好可以用來做實(shí)驗(yàn)。從這個(gè)圖中也可以推斷Eclipse不喜歡調(diào)整窗口大小使其小到形成合適的屏幕布局。從現(xiàn)在開始,顯示的屏幕截圖只顯示窗口的一部分,而不是完整的窗口。下一個(gè)需要做的工作是創(chuàng)建一個(gè)Hibernate配置文件,提供給HibernateSynchronizer使用。在src目錄中已經(jīng)有了一個(gè)perties文件,這是書中例子使用的配置。這里有個(gè)問題,壞消息是HibernateSynchronizer只能使用XML樣式的Hibernate配置文件。這樣,就需要把perties中的內(nèi)容移植到XML樣式的配置文件hibernate.cfg.xml中。好消息是,這正是HibernateSynchronizer創(chuàng)建配置文件向?qū)У谝淮未箫@身手的時(shí)候。選擇文件(File)-新建(New)-其它(Other),然后在彈出對(duì)話框選取剛可用的Hibernate類,選取HibernateConfigurationFile,然后單擊下一步(Next).打開向?qū)r(shí),保存文件的位置和在Eclipse中現(xiàn)在選擇的文件有關(guān)。請(qǐng)確保把該文件保存在src目錄中。添加其余一些向?qū)枰男畔?,這些信息應(yīng)該和配置文件的版本相一致,如圖14中所示。值得注意的是,和用Ant來控制Hibernate的運(yùn)行(書中使用就是這種方法)不同,這里你無法控制Hibernate運(yùn)行時(shí)的當(dāng)前工作目錄,因此你需要在URL文件中使用路徑的全稱。我自己的添加的URL值(有點(diǎn)難看)為jdbc:hsqldb:/Users/jim/Documents/Work/OReilly/Hibernate/Examples/ch03/data/music.(如果有人知道怎么讓Eclipse或是HibernateSynchronizer使用一個(gè)工程特定的目錄,你可以告訴我,我很想知道。因?yàn)槲也砰_始使用Eclipse,是個(gè)新手。如果有人告訴我這是可能的,只是因?yàn)槲也恢涝趺醋龆?,我一點(diǎn)也不會(huì)感到吃驚)添加DriverClass的方法有點(diǎn)奇怪,你需要確定該driver類在該工程的類路徑中)。如果你輸入jdbcD,窗口就會(huì)出現(xiàn)這個(gè)選擇,很容易就可以從中選取一個(gè)。完成后單擊Finish來完成創(chuàng)建配置文件。HibernateSynchronizer現(xiàn)在已經(jīng)可以開始使用了。完成創(chuàng)建文件后,配置文件會(huì)打開,這時(shí)候你就可以看看HibernateXML格式的配置文件的結(jié)構(gòu)和細(xì)節(jié)。生成的配置文件要想測(cè)試配置文件是否可用,有一個(gè)又快又簡(jiǎn)單的方法:使用向?qū)韯?chuàng)建一個(gè)影射文件。選擇文件(File)-新建(New)-其它(Other),選取Hibernate類別,然后再選Hibernate影射文件,單擊下一步(Next)。向?qū)С霈F(xiàn)的時(shí)候,其中有些屬性已經(jīng)自動(dòng)填入了在配置文件中相應(yīng)屬性的值,單擊Refresh(確??梢酝ㄟ^這些信息和你的數(shù)據(jù)庫相連)。和數(shù)據(jù)庫連接后,會(huì)顯示庫中的表,這里只有一個(gè)TRACK表。第一次使用的時(shí)候,不知什么原因,需要你指定包含HSQLDB驅(qū)動(dòng)的.jar文件的路徑。好在你只需要指定一次。只要你認(rèn)為工作正常(譯者注:顯示了數(shù)據(jù)庫中有權(quán)限訪問的表),單擊Cancel。試驗(yàn)中使用已有的影射文件,不需要實(shí)際創(chuàng)建一個(gè)。生成代碼這可能是你一直在等待的部分。我們能用這個(gè)插件來做什么?好,馬上就開始。為Hibernate影射文檔提供一個(gè)新的菜單條目。右擊(如果是單鍵鼠標(biāo),在按住Control鍵的同時(shí)點(diǎn)鼠標(biāo)鍵)一個(gè)影射文檔,菜單條目中會(huì)顯示幾個(gè)和Hibernate相關(guān)的選擇,其中有一個(gè)和synchronize有關(guān),這是一個(gè)手工方法,可以讓HibernateSynchronizer產(chǎn)生和該影射文檔相對(duì)應(yīng)的數(shù)據(jù)訪問對(duì)象。Synchronizer插件為影射文檔提供的幾個(gè)菜單項(xiàng)AddMappingReference選項(xiàng)也很有用,當(dāng)你單擊該項(xiàng)時(shí),會(huì)把相應(yīng)的影射文件增加到Hibernate配置文件中,表明該文件是影射文檔,因此你不需要在源代碼中增加任何信息要求相應(yīng)的影射文件進(jìn)行設(shè)置?,F(xiàn)在讓我們看看選取SynchronizeFiles后的結(jié)果。事情開始變得有趣,出現(xiàn)了兩個(gè)子包,一個(gè)是“base”的DAO,HibernateSynchronizer所有,可以在任何時(shí)候重寫,一個(gè)是繼承那些DAO類的商業(yè)對(duì)象,不會(huì)被覆蓋,也就給了我們一個(gè)機(jī)會(huì),可以在其中加入商業(yè)邏輯(具體如圖18中所示)。和Hibernate的代碼生成工具相比,用該插件生成了更多的類。這是優(yōu)點(diǎn),也可能是一些潛在的缺點(diǎn),將在Trade-Offs部分進(jìn)行討論。你可以在工程配置文件中選取要生成的類和它們所在的包的結(jié)構(gòu)。我可以證明這點(diǎn),但現(xiàn)在的發(fā)行版有個(gè)bug,,無法訪問MacOSX上的配置界面。針對(duì)該bug的一個(gè)補(bǔ)丁已經(jīng)做好了,但仍沒有發(fā)布?;贖ibernateSynchronizer網(wǎng)頁上的例子,和以下這個(gè)類一起,用那些新的數(shù)據(jù)訪問對(duì)象來試著把一些數(shù)據(jù)放入數(shù)據(jù)庫中??雌饋砗蜆?biāo)準(zhǔn)的Hibernate代碼生成工具生成的版本(在Hibernate:ADevelopersNotebook一書的39-40頁)很相似,甚至更簡(jiǎn)單一些。因?yàn)镠ibernateSynchronizer生成的類為你的每個(gè)數(shù)據(jù)庫操作都創(chuàng)建和提交一個(gè)新事務(wù),因此在與此類似的簡(jiǎn)單情況下,你不需要自己來設(shè)置事務(wù)(當(dāng)然,如果你需要把一組操作作為一個(gè)單獨(dú)事務(wù),有很多方法可以做到這點(diǎn))這里是新版本的代碼。packagecom.oreilly.hh;importjava.sql.Time;importjava.util.Date;importnet.sf.hibernate.HibernateException;importcom.oreilly.hh.dao.TrackDAO;importcom.oreilly.hh.dao._RootDAO;/*TrycreatingsomedatausingtheHibernateSynchronizerapproach.*/publicclassCreateTest2publicstaticvoidmain(Stringargs)throwsHibernateException/Loadtheconfigurationfile_RootDAO.initialize();/CreatesomesampledataTrackDAOdao=newTrackDAO();Tracktrack=newTrack(RussianTrance,vol2/album610/track02.mp3,Time.valueOf(00:03:30),newDate(),(short)0);dao.save(track);track=newTrack(VideoKilledtheRadioStar,vol2/album611/track12.mp3,Time.valueOf(00:03:49),newDate(),(short)0);dao.save(track);/Wedontevenneedatrackvariable,ofcourse:dao.save(newTrack(GravitysAngel,/vol2/album175
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年信息系統(tǒng)集成與管理考試試題及答案
- 2025年網(wǎng)絡(luò)媒介與傳播學(xué)專業(yè)模擬考試試題及答案
- 2025年設(shè)計(jì)思維與創(chuàng)新實(shí)踐考試題及答案
- 2025年人力資源管理師考試題及答案
- 2025年企業(yè)財(cái)務(wù)分析與決策制定考試卷及答案
- 2025年農(nóng)業(yè)經(jīng)濟(jì)管理專業(yè)人才招聘考試試題及答案
- 2025年老年心理學(xué)理論與應(yīng)用知識(shí)考試試卷及答案
- 2025年會(huì)計(jì)電算化專業(yè)實(shí)踐能力考試試題及答案
- 2025年編輯出版專業(yè)人才招聘考試試題及答案
- 2025年財(cái)稅專業(yè)資格考試試卷及答案
- 8.4 流體壓強(qiáng)與流速的關(guān)系 課件-2024-2025學(xué)年滬科版物理八年級(jí)下冊(cè)
- 輸血管理相關(guān)制度
- 【北師大版】2024-2025學(xué)年一年級(jí)數(shù)學(xué)下冊(cè)教學(xué)計(jì)劃(及進(jìn)度表)
- 商業(yè)安全培訓(xùn)
- 老年性癡呆病人的護(hù)理與管理
- 糖尿病足護(hù)理疑難病例討論
- 草原草場(chǎng)承包合同
- 廣西河池市2023-2024學(xué)年高二下學(xué)期7月期末考試 英語 含解析
- 數(shù)字化賦能城鄉(xiāng)融合發(fā)展
- 心臟驟停病人的搶救與護(hù)理
- 小紅書種草營(yíng)銷師(初級(jí))認(rèn)證考試真題試題庫(含答案)
評(píng)論
0/150
提交評(píng)論