| 時(shí)間:2006-01-24 作者:俞黎敏 瀏覽次數: 21116 本文關(guān)鍵字:Eclipse, Hibernate, 插件, ORM |
|

介紹如何利用Hibernate Synchronizer插件在Eclipse 3.0.1中快速的開(kāi)發(fā)Hibernate應用程序,提高我們的工作效率。
Eclipse是目前非常流行的開(kāi)發(fā)平臺,開(kāi)放擴展的架構讓很多程序員找到了自己個(gè)性化的工作環(huán)境,Hibernate也是目前很流行的O/R Mapping框架,至少在EJB 3.0大行其道之前,它是我們在考慮O/R Mapping時(shí)非常好的選擇。
關(guān)于Hibernate框架的細節,請參考《Hibernate in Action》一書(shū)。
首先需要安裝這個(gè)插件,Eclipse 3.0.1為我們提供了更加方便的插件管理方式,選擇菜單“幫助—軟件更新—查找并安裝”,選擇“搜索要安裝的新功能部件”,操作界面如下:


選擇 New Remote Site ,填寫(xiě)名稱(chēng) Hibernate PlugIn ,下面的URL中填入:http://www.binamics.com/hibernatesync
如下圖:

然后在“安裝”界面中選中我們剛添加的 Hibernate PlugIn ,打開(kāi)它,選中下一級的Synchronizer,然后Next,以下的安裝根據提示進(jìn)行Next即可了。
Eclipse就可以自己下載完成安裝,然后Eclipse自動(dòng)重啟動(dòng)一次就完成了。

Spring PlugIn的地址為:
http://springframework.sourceforge.net/spring-ide/eclipse/updatesite/
安裝配置類(lèi)似于Hibernate PlugIn的安裝。
Spring的地址為:
http://www.springframework.org/
下面演示一個(gè)最簡(jiǎn)單的單表操作,讓我們熟悉開(kāi)發(fā)過(guò)程。我們選擇MySQL數據庫來(lái)做這個(gè)應用,首先在MySQL里建立一個(gè)新的數據庫為HibernateTest,再建立一個(gè)數據表,名為Person,包含ID, Name, Sex, Address四個(gè)字段,建表語(yǔ)句如下:
# Host: localhost # Database: hibernatetest # Table: ‘person‘ # CREATE TABLE `person` ( `ID` int(11) NOT NULL auto_increment, `Name` varchar(20) NOT NULL default ‘‘, `Sex` char(1) default NULL, `Address` varchar(200) default NULL, PRIMARY KEY (`ID`) ) TYPE=MyISAM;

然后新建一個(gè)普通的Java項目:“File -> Project -> New Project ->Java Project

輸入項目名稱(chēng):HibernateMySQL

注意加入Hibernate的所有lib文件,包括有Hibernate下面的hibernate2.jar和lib目錄下面的所有.jar文件;
還有要加入MySQL的jdbc驅動(dòng)文件,比如mysql-connector-java-3.0.14-production-bin.jar
驅動(dòng)程序自己選擇加載,版本不同,文件名也不同:)

下面我們需要在項目中加入一個(gè)Hibernate的配置文件,在src目錄下選擇 New -> Other -> Hibernate -> Hibernate Configuration File,如下圖:


在彈出的界面中,你需要指定要使用的數據庫,以及連接數據庫所需要的信息,我們對應的選擇了數據庫為MySQL,并配置了數據庫的URL和管理員賬號與密碼,如下:
Database Type: QL Driver Class: org.git.mm.mysql.Driver Database URL: jdbc:mysql://localhost:3306/HibernateTest Username: root Password:

點(diǎn)擊Browse按鈕,在彈出的框中輸入Driver,在下面就會(huì )出現相應的驅動(dòng)所在的包
我們選中org.git.mm.mysql.Driver所在的包的文件,確定即可。

在上圖中,我們還可以指定從JNDI數據源中獲得連接,可以點(diǎn)擊 Datasource 標簽進(jìn)行配置。

點(diǎn)擊 Finish 按鈕之后系統會(huì )自己生成一個(gè)名為 hibernate.cfg.xml 的文件,里面包含了基本的配置信息,如果需要高級配置,可以手動(dòng)配置,也可以通過(guò)其它插件來(lái)進(jìn)行編輯,比如MyEclipse的XML Editor

下面要生成映射文件,首先新建一個(gè)包 New -> Package,輸入net.echochina.hibernatetest


在這個(gè)包下選擇 New -> Other -> Hibernate -> Hibernate Mapping File ,在彈出的界面中點(diǎn)擊 Refresh 按鈕,將會(huì )列出庫中所有的數據表,選中我們要使用的 Person 表,點(diǎn)擊 Browse 按鈕,選擇我們所要生成的POJO文件所在的包:net.echochina.hibernatetest
如下圖:

在上述界面的 Properties 標簽中可以配置hbm的其他選項,包括文件擴展名,聚合列名,ID生成規則等。完成后,系統會(huì )自動(dòng)生成一個(gè)名為 Person.hbm 的文件,我們可以通過(guò)這個(gè)文件生成相關(guān)的存根類(lèi)。

在Person.hbm文件上單擊右鍵,選擇 Hibernate Synchronizer -> Synchronize Files

該操作將生成三個(gè)包八個(gè)類(lèi)文件,里面封裝了Hibernate的操作細節,讓我們可以專(zhuān)心面對業(yè)務(wù)邏輯的開(kāi)發(fā),仔細閱讀這些文件可以提高你對Hibernate的認識,增長(cháng)應用技巧。
然后我們需要在Hibernate的配置文件中添加對Person 的相關(guān)信息,在Person.hbm上單擊右鍵,選擇Synchronizer -> Add Mapping Reference

現在我們可以開(kāi)始編寫(xiě)自己的程序邏輯了,代碼可以寫(xiě)在
net.echochina.hibernatetest.dao.PersonDAO類(lèi)中,這個(gè)類(lèi)的代碼不會(huì )被插件進(jìn)行修改的。

首先在數據庫里增加一條新的記錄
在PersonDAO類(lèi)中增加一個(gè)引入import net.echochina.hibernatetest.Person;
然后加入一個(gè)main方法,內容如下:
public static void main(String args[])
{
try
{
_RootDAO.initialize();
PersonDAO persondao = new PersonDAO();
Person person = new Person();
person.setName("YuLimin");
person.setSex("M");
person.setAddress("http://Java.EchoChina.net");
persondao.save(person);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//測試MySQL的中文問(wèn)題:更改內容如下,把setName的參數改為中文的內容:
person.setName("俞黎敏");
這里應當到hibernate.cfg.xml文件的<session-factory/>塊中增加上如下兩行設置
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">GBK</property>
這樣插入數據與讀取數據時(shí)才不會(huì )有中文的問(wèn)題,如果仍有中文問(wèn)題請Google吧:)
可以看出,插件已經(jīng)把session操作和事務(wù)操作都封裝起來(lái)了,我們的代碼工作得到了極大的簡(jiǎn)化。而且我們可以利用插件自帶的Hibernate Editor來(lái)編輯hbm文件,非常方便。
我們還需要把ID的生成方式改為 identity,右鍵Person.hbm,Open With -> Hibernate Editor

把ID的生成方式改為 identity

要讓這個(gè)程序正常運行,還需要對配置文件hibernate.cfg.xml作一些修改。
使用Eclipse的 文本編輯器 打開(kāi)該文件,其中有如下的內容:
<!-- <property name="hibernate.transaction.factory_class"> net.sf.hibernate.transaction.JTATransactionFactory </property> <property name="jta.UserTransaction"> java:comp/UserTransaction </property> -->
由于在我們的例子中,并沒(méi)有使用JTA來(lái)控制事務(wù),所以需要將上面的內容注釋掉,程序才能正常運行。

現在可以開(kāi)始運行了,點(diǎn)擊Run

在出現的配置中選擇Java Application,Name中輸入PersonDAO

單擊Search 按鈕,在彈出地框中選擇net.echochina.hibernatetest包中的PersonDAO類(lèi)

OK之后,點(diǎn)擊Run開(kāi)始運行,如果以上各步操作正確的話(huà),可以看到數據已經(jīng)被保存到數據庫。

如果在實(shí)際開(kāi)發(fā)工作中,需要重新設計數據表結構,那么只需要在.hbm文件中做相應的修改,然后執行 Synchronize and Overwrite 的操作,插件會(huì )重新生成存根文件,我們只需要修改程序邏輯就可以了,非常方便。有了這樣的功能插件,我們可以極大的從配置文件的編寫(xiě)、查錯中解脫出來(lái),從而提高我們的工作效率。
Hibernate Synchronizer 很好的輔助開(kāi)發(fā)工具,是一個(gè)Eclipse 的插件,可以生成80%的代碼,首選。
MyEclipse 安裝的 3.8.3 感覺(jué)非常的強大,主要是因為他是付費的,做得比較全面,喜歡他們的struts 組件,開(kāi)發(fā) Struts 必不可少。
Hibernator Hibernate查詢(xún)的輔助工具,可以使用 HSQL進(jìn)行查詢(xún),測試HSQL的好工具,是個(gè)Eclipse插件。
Hibern8IDE(現更名為:HibernateConsole) 一個(gè)單獨運行的Hibernate工具,可以運行 Hibernate Query Language (HQL)語(yǔ)句。
MiddleGen 生成持久對象的工具,可以生成
Persistence layer with EJB (CMP 2.0)
Persistence layer with JDO
Persistence layer with Hibernate
Persistence layer with Torque
Database GUI with JSP/Struts
http://spindle.sourceforge.net 開(kāi)發(fā)Tapestry的必備
http://springui.sourceforge.net 寫(xiě)Spring Application Context File的輔助好工具

![]() |
![]() |
![]() |

聯(lián)系客服