終于把hibernate調(diào)通了,一個簡單的入門例子

           

            花了小半天,終于把一個簡單的hibernate程序搞通了,成功的向數(shù)據(jù)庫中添加了數(shù)據(jù)。現(xiàn)在冷靜下來想一下,其實(shí)也挺簡單的,但在具體的過程中自己出了不少的錯誤,究其原因有二:其一是自己從網(wǎng)上找了一些程序,但沒有理解其根本意思就開始照著上面的代碼編寫,結(jié)果編寫出來的大多不能正常運(yùn)行;其二是由于公司只提供eclipse開發(fā)工具,沒有myeclipse插件,所以開發(fā)hibernate, struts框架的時候就很不方便。我采用hibernate Synchronizer插件來進(jìn)行開發(fā)。因?yàn)樵谟性S多同行都推薦它,但具體怎么樣,我現(xiàn)在還不好說,畢竟剛開始用這個插件。若想了解hibernate Synchronizer的特性,網(wǎng)上google一下,多的是。

          好了,現(xiàn)在具體來說說這個簡單的例子。

          首先,需要具備以下條件;

          1eclipse 3.2或者其它版本。此文所采用的是3.2英文版。

          2Mysql 數(shù)據(jù)庫以及驅(qū)動程序.jar文件。

          3hibernate Synchronizer插件。可從sourcefourge上下載。

          4hibernate文件包,里面包括所有的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工程,將hibernatemysql.jar文件導(dǎo)入到工程中。具體操作:右鍵單擊工程->Build path->Configure build path->add external JARS 導(dǎo)入hibernatemysql的相關(guān)jar文件。至此我們已經(jīng)搭建好了開發(fā)環(huán)境,下一步開始進(jìn)行實(shí)際開發(fā)。

          第五,右鍵單擊工程,選擇new-->other-->hibernate-->hibernate configure file,在彈出窗口中填入相應(yīng)內(nèi)容,eclipse將會自動生成hibernateconfigure 文件。在彈出的窗口中也可以選擇數(shù)據(jù)源配置方式,方法只要在窗口在connection項(xiàng)中選擇database便可。有興趣的可以自己試試看。

          注意:請保證configure文件是處于工程的根目錄下面,否則在編譯的時候會因?yàn)檎也坏皆撐募鲥e。

          第六,在工程中新建一個包,名字隨你喜歡,主要是用來存放一些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)過上一步后,因?yàn)槲覀儾捎?/span>hibernate Synchronizereclipse會為我們自動生成一個person.java文件和一個BasePerson.java文件,BasePerson.java位于一個獨(dú)立包中,主要是提供對數(shù)據(jù)庫表person的相應(yīng)字段的getset方法,它實(shí)現(xiàn)Serializable接口。并重寫了其中的equals(),hashCode()toString()方法。我理解為實(shí)際上就是一個POJO,沒有什么其它特殊的。而person.java只是繼承了BasePerson.java,這樣做的好處就是實(shí)現(xiàn)程序更好的封裝。

          上面的步驟都完成以后,我們需要將person.hbm.xml文件映射到hibernate.cfg.xml文件中去,這樣才能程序找到person這個類。方法:依次執(zhí)行12。(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 filehibernate.cfg.xm.添加映射文件的時候,它會自動將hibernate.cfg.xm.的標(biāo)題部份去掉。這時只要把標(biāo)題部份寫上便可以成功執(zhí)行。

          在這里我只寫出了向數(shù)據(jù)庫中添加記錄這一項(xiàng)功能,其它功能可以由自己去試驗(yàn)。都是最基礎(chǔ)的東西,還得繼續(xù)努力。

          總結(jié):經(jīng)過這次教訓(xùn),自己意識到一個問題,我們不能總把從網(wǎng)上找到的代碼就直接拿去運(yùn)行調(diào)試,而應(yīng)該弄清楚它的基本結(jié)構(gòu),因?yàn)榭赡芷渲写嬖谠S多問題,要想把一段代碼真正變成自己的,還是要經(jīng)過一定的探索。


           

          posted on 2007-09-29 19:17 ^小^齊^ 閱讀(852) 評論(1)  編輯  收藏 所屬分類: Hibernate

          評論

          # re: 終于把hibernate調(diào)通了,一個簡單的入門例子 2007-09-29 20:34 flyingdancing

          不錯~~~~~~  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          相冊

          我喜歡去的地方

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 玉门市| 金昌市| 周至县| 濮阳县| 措勤县| 开封县| 沾益县| 延津县| 巴马| 开远市| 延寿县| 黎川县| 濉溪县| 剑河县| 皮山县| 朔州市| 大丰市| 鹤峰县| 汤阴县| 新建县| 黑山县| 陵水| 和田市| 彭州市| 湖州市| 吴忠市| 浦北县| 宝清县| 鄂尔多斯市| 邻水| 调兵山市| 手机| 浦北县| 牡丹江市| 乌拉特前旗| 磴口县| 华坪县| 育儿| 绥芬河市| 潜江市| 千阳县|