添加Driver Class 的方法有點(diǎn)希奇,你需要單擊Browse按鈕,然后開始輸入driver的類名(譯者注:你需要確定該driver類在該工程的類路徑中)。假如你輸入"jdbcD",窗口就會(huì)出現(xiàn)這個(gè)選擇,很輕易就可以從中選取一個(gè)。具體如圖15所示。
和Hibernate的代碼生成工具相比,用該插件生成了更多的類。這是優(yōu)點(diǎn),也可能是一些潛在的缺點(diǎn),將在Trade-Offs 部分進(jìn)行討論。你可以在工程配置文件中選取要生成的類和它們所在的包的結(jié)構(gòu)。我可以證實(shí)這點(diǎn),但現(xiàn)在的發(fā)行版有個(gè)bug ,,無法訪問Mac OS X上的配置界面。針對該bug的一個(gè)補(bǔ)丁已經(jīng)做好了,但仍沒有發(fā)布。
基于Hibernate Synchronizer網(wǎng)頁上的例子,和以下這個(gè)類一起,用那些新的數(shù)據(jù)訪問對象來試著把一些數(shù)據(jù)放入數(shù)據(jù)庫中??雌饋砗蜆?biāo)準(zhǔn)的Hibernate代碼生成工具生成的版本(在Hibernate: A Developer's Notebook一書的39-40頁)很相似,甚至更簡單一些。因?yàn)镠ibernate Synchronizer生成的類為你的每個(gè)數(shù)據(jù)庫操作都創(chuàng)建和提交一個(gè)新事務(wù),因此在與此類似的簡單情況下,你不需要自己來設(shè)置事務(wù)(當(dāng)然,假如你需要把一組操作作為一個(gè)單獨(dú)事務(wù),有很多方法可以做到這點(diǎn))這里是新版本的代碼。
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)); }}
一旦把那些行變成注釋后,再次運(yùn)行程序。這次,也就是第三次運(yùn)行成功。我在自己計(jì)算機(jī)上運(yùn)行沒有一點(diǎn)錯(cuò)誤,數(shù)據(jù)已經(jīng)保存到數(shù)據(jù)庫中。運(yùn)行 ant db 這個(gè)target(在Developer's Notebook一書的第一章有相應(yīng)的解釋)可以把表中所有的數(shù)據(jù)顯示出來(不可否認(rèn),這也許有點(diǎn)簡單),如圖20中所示。假如你跟著這篇文章中順序來做的,而不是跟著書中步驟一步一步來的,你需要先運(yùn)行ant schema來創(chuàng)建數(shù)據(jù)庫中的表,或是刪除以前試驗(yàn)留下的數(shù)據(jù)。