花了小半天,終于把一個簡單的hibernate程序搞通了,成功的向數(shù)據(jù)庫中添加了數(shù)據(jù)。現(xiàn)在冷靜下來想一下,其實也挺簡單的,但在具體的過程中自己出了不少的錯誤,究其原因有二:其一是自己從網(wǎng)上找了一些程序,但沒有理解其根本意思就開始照著上面的代碼編寫,結(jié)果編寫出來的大多不能正常運(yùn)行;其二是由于公司只提供eclipse開發(fā)工具,沒有myeclipse插件,所以開發(fā)hibernate, struts框架的時候就很不方便。我采用hibernate Synchronizer插件來進(jìn)行開發(fā)。因為在有許多同行都推薦它,但具體怎么樣,我現(xiàn)在還不好說,畢竟剛開始用這個插件。若想了解hibernate Synchronizer的特性,網(wǎng)上google一下,多的是。
好了,現(xiàn)在具體來說說這個簡單的例子。
首先,需要具備以下條件;
1:eclipse 3.2或者其它版本。此文所采用的是3.2英文版。
2:Mysql 數(shù)據(jù)庫以及驅(qū)動程序.jar文件。
3:hibernate Synchronizer插件。可從sourcefourge上下載。
4:hibernate文件包,里面包括所有的jar文件。
第二:在MYSQL中建立一個測試數(shù)據(jù)庫,名為test。并建立一個數(shù)據(jù)表person:
use test;
create table person(
ID int auto_increment primary key,
Name char(10),
Sex char(1),
Address char(20));
第三,在eclipse中新建一個java project。命名為hibernateTest。并導(dǎo)入JRE文件.
第四,右鍵單擊已經(jīng)建立好的JAVA工程,將hibernate和mysql的.jar文件導(dǎo)入到工程中。具體操作:右鍵單擊工程->Build path->Configure build path->add external JARS 導(dǎo)入hibernate和mysql的相關(guān)jar文件。至此我們已經(jīng)搭建好了開發(fā)環(huán)境,下一步開始進(jìn)行實際開發(fā)。
第五,右鍵單擊工程,選擇new-->other-->hibernate-->hibernate configure file,在彈出窗口中填入相應(yīng)內(nèi)容,eclipse將會自動生成hibernate的configure 文件。在彈出的窗口中也可以選擇數(shù)據(jù)源配置方式,方法只要在窗口在connection項中選擇database便可。有興趣的可以自己試試看。
注意:請保證configure文件是處于工程的根目錄下面,否則在編譯的時候會因為找不到該文件而出錯。
第六,在工程中新建一個包,名字隨你喜歡,主要是用來存放一些JAVA文件。右鍵單擊工程hibernateTestànewàpackageà寫入包名,這里我所用的包名是src。完成以后,單擊所建立的包,newàotheràhibernateàhibernate mapping file,出現(xiàn)配置窗口,如果前面步驟正確的話,將會看到如圖的畫面,點(diǎn)擊tables對應(yīng)的refresh按鍵,將會出現(xiàn)你所建數(shù)據(jù)庫中的表,此時選擇我們所建立的person表,點(diǎn)擊finish,會看到src目錄中出現(xiàn)了一個person.hbm.xml文件,利用hibernate Synchronizer Editer打開這個文件,方法:右鍵單擊該文件àopenwithàhibernate Synchronizer Editer。查看其中ID的<generator class>屬性,確認(rèn)該屬性配置為identity,自動增長型。配置完成。
經(jīng)過上一步后,因為我們采用hibernate Synchronizer,eclipse會為我們自動生成一個person.java文件和一個BasePerson.java文件,BasePerson.java位于一個獨(dú)立包中,主要是提供對數(shù)據(jù)庫表person的相應(yīng)字段的get和set方法,它實現(xiàn)Serializable接口。并重寫了其中的equals(),hashCode()和toString()方法。我理解為實際上就是一個POJO,沒有什么其它特殊的。而person.java只是繼承了BasePerson.java,這樣做的好處就是實現(xiàn)程序更好的封裝。
上面的步驟都完成以后,我們需要將person.hbm.xml文件映射到hibernate.cfg.xml文件中去,這樣才能程序找到person這個類。方法:依次執(zhí)行1和2。(1)右鍵單擊person.hbm.xmlàhibernate Synchronizerà Synchronizefiles 。(2)右鍵單擊person.hbm.xmlàhibernate SynchronizeràAdd mapping reference。
經(jīng)過以上所有操作,我們完成了所有需要配置的文件,現(xiàn)在來編寫一個測試文件,測試我們的上述配置是否成功。新建一個JAVA文件。放在src 目錄下,在下輸入以內(nèi)容:
package src;
import java.util.Date;
import java.util.Iterator;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Hello {
/**
*
*
*/
public Hello(){
}
public static void main(String[] args) throws Exception{
Configuration cfg = new Configuration().configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Person person = new Person();
person.setName("hejian22");
person.setSex("F");
person.setAddress("http://test.com.cn");
session.save(person);
session.flush();
session.close();
}
}
完成后,運(yùn)行該文件,會出現(xiàn)錯誤,經(jīng)過多番查找資料,才發(fā)現(xiàn)hibernate Synchronizer插件有一個BUG,當(dāng)我們通過add mapping file向hibernate.cfg.xm.添加映射文件的時候,它會自動將hibernate.cfg.xm.的標(biāo)題部份去掉。這時只要把標(biāo)題部份寫上便可以成功執(zhí)行。
在這里我只寫出了向數(shù)據(jù)庫中添加記錄這一項功能,其它功能可以由自己去試驗。都是最基礎(chǔ)的東西,還得繼續(xù)努力。
總結(jié):經(jīng)過這次教訓(xùn),自己意識到一個問題,我們不能總把從網(wǎng)上找到的代碼就直接拿去運(yùn)行調(diào)試,而應(yīng)該弄清楚它的基本結(jié)構(gòu),因為可能其中存在許多問題,要想把一段代碼真正變成自己的,還是要經(jīng)過一定的探索。