亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

在Eclipse中使用Hibernate二(駔圖)

2019-11-18 12:57:32
字體:
來源:轉載
供稿:網友

  添加Driver Class 的方法有點希奇,你需要單擊Browse按鈕,然后開始輸入driver的類名(譯者注:你需要確定該driver類在該工程的類路徑中)。假如你輸入"jdbcD",窗口就會出現這個選擇,很輕易就可以從中選取一個。具體如圖15所示。
  
 在Eclipse中使用Hibernate二(駔圖)(圖一)
  圖15 指定HSQLDB的driver類

  
  只要添加如圖14中那些屬性值就可以。完成后單擊Finish來完成創建配置文件。Hibernate Synchronizer 現在已經可以開始使用了。完成創建文件后,配置文件會打開,這時候你就可以看看Hibernate xml格式的配置文件的結構和細節。
  
 在Eclipse中使用Hibernate二(駔圖)(圖二)
  圖16 生成的配置文件

  
  要想測試配置文件是否可用,有一個又快又簡單的方法:使用向導來創建一個影射文件。選擇文件(File) -> 新建(New) -> 其它(Other),選取Hibernate類別,然后再選Hibernate 影射文件,單擊下一步(Next)。向導出現的時候,其中有些屬性已經自動填入了在配置文件中相應屬性的值,單擊Refresh(確??梢酝ㄟ^這些信息和你的數據庫相連)。和數據庫連接后,會顯示庫中的表,這里只有一個TRACK表。第一次使用的時候,不知什么原因,需要你指定包含HSQLDB驅動的.jar文件的路徑。好在你只需要指定一次。只要你認為工作正常(譯者注:顯示了數據庫中有權限訪問的表),單擊Cancel。試驗中使用已有的影射文件,不需要實際創建一個。
  
  生成代碼
  
  這可能是你一直在等待的部分。我們能用這個插件來做什么?好,馬上就開始。為Hibernate影射文檔提供一個新的菜單條目。
  
  右擊(假如是單鍵鼠標,在按住Control鍵的同時點鼠標鍵)一個影射文檔,菜單條目中會顯示幾個和Hibernate相關的選擇(如圖17所示),其中有一個和synchronize有關,這是一個手工方法,可以讓Hibernate Synchronizer產生和該影射文檔相對應的數據訪問對象。
  
 在Eclipse中使用Hibernate二(駔圖)(圖三)
  圖17 Synchronizer插件為影射文檔提供的幾個菜單項

  
  Add Mapping Reference 選項也很有用,當你單擊該項時,會把相應的影射文件增加到Hibernate配置文件中,表明該文件是影射文檔,因此你不需要在源代碼中增加任何信息要求相應的影射文件進行設置?,F在讓我們看看選取Synchronize Files后的結果。
  
  事情開始變得有趣,出現了兩個子包,一個是“base”的DAO,Hibernate Synchronizer所有,可以在任何時候重寫,一個是繼續那些DAO類的商業對象,不會被覆蓋,也就給了我們一個機會,可以在其中加入商業邏輯(具體如圖18中所示)。
  
 在Eclipse中使用Hibernate二(駔圖)(圖四)
  圖18 同步后的DAO,圖中顯示的是我們可以編輯的子類

  
  和Hibernate的代碼生成工具相比,用該插件生成了更多的類。這是優點,也可能是一些潛在的缺點,將在Trade-Offs 部分進行討論。你可以在工程配置文件中選取要生成的類和它們所在的包的結構。我可以證實這點,但現在的發行版有個bug ,,無法訪問Mac OS X上的配置界面。針對該bug的一個補丁已經做好了,但仍沒有發布。
  
  基于Hibernate Synchronizer網頁上的例子,和以下這個類一起,用那些新的數據訪問對象來試著把一些數據放入數據庫中??雌饋砗蜆藴实腍ibernate代碼生成工具生成的版本(在Hibernate: A Developer's Notebook一書的39-40頁)很相似,甚至更簡單一些。因為Hibernate Synchronizer生成的類為你的每個數據庫操作都創建和提交一個新事務,因此在與此類似的簡單情況下,你不需要自己來設置事務(當然,假如你需要把一組操作作為一個單獨事務,有很多方法可以做到這點)這里是新版本的代碼。
  
  package com.oreilly.hh;import java.sql.Time;
  import java.util.Date;import net.sf.hibernate.HibernateException;
  import com.oreilly.hh.dao.TrackDAO;import com.oreilly.hh.dao._RootDAO;
  /** * Try creating some data using the Hibernate Synchronizer apPRoach.
  */public class CreateTest2 {
  public static void main(String[] args) throws HibernateException {
  // Load the configuration file
  _RootDAO.initialize();
  // Create some sample data
  TrackDAO dao = new TrackDAO();
  Track track = new Track("Russian Trance", "vol2/album610/track02.mp3",
  Time.valueOf("00:03:30"), new Date(), (short)0);
  dao.save(track);
  track = new Track("Video Killed the Radio Star",
  "vol2/album611/track12.mp3", Time.valueOf("00:03:49"), new Date(),
  (short)0);
  dao.save(track);
  // We don't even need a track variable, of course:
  dao.save(new Track("Gravity's Angel", "/vol2/album175/track03.mp3",
  Time.valueOf("00:06:06"), new Date(), (short)0));
  }}
  
  當我寫這個的時候,有Eclipse在手邊真是太好了 ,我已經忘了當寫書中例子的時候多么想念智能代碼完成功能,有另外幾件事情JDT也發揮了作用。
  
  為了在Eclipse中運行這個簡單的程序,需要設置一個新的運行配置。用CreateTest2.java作為當前文件,選擇運行(Run )-> 運行...(Run...)。然后單擊新建(New),因為該類有一個main() 方法,Eclipse推斷出要運行該工程的當前類。Eclipse為新的運行配置取的名字,CreateTest2,很合適。屏幕窗口看起來如圖19中所示,單擊運行來在數據庫中創建一些數據。
  
 在Eclipse中使用Hibernate二(駔圖)(圖五)
  圖19 預備在Eclipse中運行創建數據的測試程序

  
  假如你確實按照上邊說的來做,你會發現第一次的嘗試運行失敗。Hibernate抱怨配置文件中連一個映射文件都沒有參考,為了運行程序,至少需要一個這樣的文件。這也是為什么XMLBuddy在圖16底部用黃色下劃線發出警告??梢院茌p易修改該錯誤,你只要在包資源瀏覽器(Package EXPlorer)中的Track.hbm.xml這個影射文檔上單擊右鍵,在Hibernate Synchronizer子菜單中選取Add Mapping Reference(如圖17中所示),這樣XMLBuddy就不會再抱怨XML文件有錯誤,程序也可以繼續向前。不幸的是,沒有向前推進我們所愿的那樣遠,下一個問題又出來了。Eclipse中顯示的下一個錯誤是“不能在JNDI中找到JTA UserTransaction initial context”。不止我一個人犯這種錯誤,因為在a forum thread中有這樣的討論,而且到目前為止仍然沒有找到一個解決方法。
  
  既然我知道不需要使用JTA,我倒是很想知道為什么Hibernate竟然會使用JTA?打開Hibernate配置文件,如圖16所示,看看是不是Hibernate Synchronizer在其中加入了可疑的內容??戳伺渲梦募?,可以確定,有一些行看起來是罪魁禍首:
  <property name="hibernate.transaction.factory_class">
  net.sf.hibernate.transaction.JTATransactionFactory
  </property>
  <property name="jta.UserTransaction">
  java:comp/UserTransaction </property>
  
  一旦把那些行變成注釋后,再次運行程序。這次,也就是第三次運行成功。我在自己計算機上運行沒有一點錯誤,數據已經保存到數據庫中。運行 ant db 這個target(在Developer's Notebook一書的第一章有相應的解釋)可以把表中所有的數據顯示出來(不可否認,這也許有點簡單),如圖20中所示。假如你跟著這篇文章中順序來做的,而不是跟著書中步驟一步一步來的,你需要先運行ant schema來創建數據庫中的表,或是刪除以前試驗留下的數據。
  
 在Eclipse中使用Hibernate二(駔圖)(圖六)
  圖20 在Eclipse中運行Ant

  
  你可以在Eclipse內運行Ant的target,方法是用右鍵單擊包資源瀏覽器(Package Explorer)中的build.xml 文件,選擇菜單中的運行Ant(Run Ant),然后在彈出對話框中選擇你要運行的target,如圖21所示。這個功能很cool。
  
 在Eclipse中使用Hibernate二(駔圖)(圖七)
  圖21 在Eclipse中運行Ant

  
  查詢數據相當簡單、直白,即使Hibernate Synchronizer產生了很多輔助方法來使用指定查詢,我認為這些沒有什么用處,都是運行查詢,然后返回包含結果的列表,而不是返回一個Query對象,讓你直接使用該對象。這使你不能使用任何Query提供的、方便的、類型安全(type-safe)的參數設置方法,因為這個,我打算讓_RootDAO對象提供一個session對象,可以用“老式”的方法來使用Hibernate。公平來說,我認為假如編輯Hibernate Synchronizer 用來生成代碼所使用的模板,就可以生成想要的任何方法,假如有一個項目,要用到該插件,可以肯定我會試著這么做。
  
  實際上,進一步考慮,當你得到一個活動的Session時,你只能使用Query,而這些DAO對象已經提供為相應功能最佳的實現。假如你和我在例子中使用查詢的方法一樣,那就需要你自己來實現session治理。你能夠把session治理內嵌于你自己所寫的那一半DAO中,這樣可以給你提供兩方面的好處。(譯者注:和有base的java POJO對象一樣,對于DAO,該插件也生成一對類,一個base DAO給該插件用,一個是繼續該base DAO的自定義DAO,你可以在其中添加商業邏輯)。這也是Hibernate Synchronizer把類分隔開來如此有用的另一個原因。對該插件的遠見在下邊做了一點研究
  
  不管怎么說,下邊是我第一次使用的代碼,和書中48-49頁上的代碼功能

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美乱大交做爰xxxⅹ性3| 亚洲黄一区二区| 日韩精品丝袜在线| 亚洲综合中文字幕68页| 亚洲午夜精品久久久久久性色| 日韩女优人人人人射在线视频| 国产91对白在线播放| 国产精品一区二区三区久久| 97国产一区二区精品久久呦| 欲色天天网综合久久| 国产精品久久久久一区二区| 亚洲精美色品网站| 亚洲全黄一级网站| 亚洲一区二区三| 亚洲欧美日韩国产精品| 欧美激情一区二区三区在线视频观看| 中文字幕一精品亚洲无线一区| 国产欧美日韩精品丝袜高跟鞋| 欧美日韩爱爱视频| 欧美日韩国产成人在线| 欧美做受高潮电影o| 日日摸夜夜添一区| 亚洲另类xxxx| 欧美疯狂做受xxxx高潮| 久久久亚洲成人| 这里只有精品在线播放| 欧美麻豆久久久久久中文| 狠狠色香婷婷久久亚洲精品| 亚洲欧美在线看| 中文字幕在线视频日韩| 亚洲黄在线观看| 一本色道久久88亚洲综合88| 国产suv精品一区二区三区88区| 国产精品福利久久久| 97精品国产97久久久久久春色| 亚洲电影免费观看高清完整版在线观看| 国产精品久久久久久久久久尿| 亚洲天堂色网站| 午夜精品一区二区三区在线视频| 88国产精品欧美一区二区三区| 免费97视频在线精品国自产拍| 一区二区三区视频观看| 亚洲激情视频在线| 久久久中精品2020中文| 91精品视频一区| 青青草一区二区| 亚洲三级 欧美三级| 欧美成人免费在线视频| 中文字幕自拍vr一区二区三区| 亚洲人成网站999久久久综合| 欧美人与性动交a欧美精品| 国产精品永久免费视频| 亚洲视频在线免费观看| 在线午夜精品自拍| 日本免费一区二区三区视频观看| 日韩欧美在线字幕| 国产精品久久久久久av福利| 国产亚洲精品一区二555| 日韩av在线免费观看一区| 亚洲成人久久久| 日韩电影免费在线观看| 亚洲成人久久网| 成人欧美一区二区三区在线湿哒哒| 奇门遁甲1982国语版免费观看高清| 欧美日韩国产激情| 国产精品久久久久秋霞鲁丝| 色偷偷88888欧美精品久久久| 欧美一区二区三区免费视| 亚洲国产成人精品女人久久久| 午夜精品一区二区三区在线| 亚洲精品98久久久久久中文字幕| 国产精品v片在线观看不卡| 欧美老妇交乱视频| 亚洲欧美中文另类| 国产做受69高潮| 欧美人在线视频| 91po在线观看91精品国产性色| www.亚洲天堂| 国产精品老女人视频| 欧美日韩一区二区在线播放| 欧美激情一区二区三级高清视频| 欧美激情a在线| 国产欧美亚洲精品| 亚洲人成绝费网站色www| 欧美激情网友自拍| 国产大片精品免费永久看nba| 国产精品久久在线观看| 久久福利视频网| 欧美最近摘花xxxx摘花| 日韩电影免费在线观看| 性亚洲最疯狂xxxx高清| 国产综合香蕉五月婷在线| 日韩成人在线电影网| 色综合亚洲精品激情狠狠| 国产精品久久激情| 欧美成人免费视频| 亚洲第一免费网站| 国产啪精品视频网站| 久久久在线观看| 欧美电影免费观看高清| 欧美尺度大的性做爰视频| 欧美xxxx14xxxxx性爽| 国产在线观看91精品一区| 最新中文字幕亚洲| 欧美国产精品人人做人人爱| 欧美日韩第一视频| 国产一级揄自揄精品视频| 中文字幕亚洲专区| 日本久久久久久久| 日本伊人精品一区二区三区介绍| 国产男人精品视频| 色综合久久中文字幕综合网小说| 欧美性生交大片免网| 中文字幕亚洲一区在线观看| 国产丝袜视频一区| 欧美www视频在线观看| 久久国产精品99国产精| 亚洲国产精品大全| 亚洲欧洲国产精品| 性欧美视频videos6一9| 欧美激情日韩图片| 欧美日韩在线视频首页| 久久久久久久一区二区| 国产亚洲精品成人av久久ww| 亚洲精品久久7777777| 久久精品99久久久久久久久| 亚洲www永久成人夜色| 久热在线中文字幕色999舞| 欧美激情喷水视频| 26uuu另类亚洲欧美日本老年| 久久久极品av| 国产成人亚洲精品| 日韩精品视频免费专区在线播放| 成人免费网站在线观看| 国产在线精品一区免费香蕉| 久久久成人精品| 2019最新中文字幕| 亚洲欧美日本另类| 久久黄色av网站| 亚洲视频一区二区三区| 国内揄拍国内精品| 欧美高清视频在线观看| 国产91在线视频| 日日骚av一区| 国产精品嫩草影院久久久| 国内精品小视频在线观看| 55夜色66夜色国产精品视频| 中文字幕久热精品在线视频| 日韩在线中文字| 精品网站999www| 日韩高清电影免费观看完整| 精品女同一区二区三区在线播放| 亚洲成人激情图| 欧美诱惑福利视频| 欧美怡红院视频一区二区三区| 最近2019中文字幕一页二页| 亚洲情综合五月天| 欧美性一区二区三区| 亚洲精品之草原avav久久| 91欧美精品成人综合在线观看| 成人在线视频福利| 亚洲国产精品成人一区二区| 成人欧美一区二区三区在线| 午夜精品久久久久久久久久久久久|