在Eclipse上使用Hibernate
(1)下載Hibernate,並向專案中匯入Hibernate。
Project->Properies->Java Build Path->Libraries->Add External JARs...,選擇Hibernate根目錄下的hibernate3.jar,新增到專案中。
接著,要將Hibernate下的lib資料夾下的所有檔案都作為一個User Library新增到專案中,否則,如果僅僅新增hibernate3.jar,編譯可以通過,執行卻會丟擲ClassNotDef的異常,因為hibernate3.jar依賴於Hibernate下的lib資料夾下的檔案。
2)我們的應用的後臺資料庫使用的是Oracle,所以首先要在例子專案中引入含有Oracle jdbc driver的包,classes12.jar。該jar檔案位於oracle安裝目錄的jdbc\lib目錄下。
在Eclipse中,Project->Properies->Java Build Path->Libraries->Add External JARs...,選擇classes12.jar,將其新增到專案中。
(3)生成hibernate.cfg.xml檔案。
通常Hibernate的配置檔案和.hbm.xml檔案都可以自動生成,這種自動生成的工具很多,我使用的是HibernateSynchronizer,它可以作為一個外掛新增到Eclipse中。當HibernateSynchronizer外掛正確載入後,我們可以向當前專案中新增Hibernate配置檔案:File->New->Other->Hibernate->Hibernate Configuration File,出現如下介面:
注意,Driver Class要選擇針對Oracle的oracle.jdbc.driver.OracleDriver,而且Database URL的格式也要正確,如:
jdbc:oracle:thin:@10.8.8.221:1521:ORCL
最好將hibernate.cfg.xml檔案存放於專案的根目錄下。
4)生成.hbm.xml檔案。File->New->Other->Hibernate->Hibernate Mapping File,出現如下介面:
在填寫完Password後,點選Refresh按鈕,就會在Tables中列出所有可以訪問的資料庫表,然後選中要為其生成.hbm.xml檔案的表,點選Finish,即會生成對應的.hbm.xml檔案,比如我上面選擇的是Mobileuser表,就會生成Mobileuser.hbm.xml檔案。
(5)從.hbm.xml檔案自動生成實體類。
在Package Explorer中選中Mobileuser.hbm.xml檔案,右鍵->Hibernate Synchronizer->Synchronize Files ,即可生成對應的實體類和DAO類。如果你僅僅想要實體類,那麼可以在Project->Properies->Hibernate Synchronizer->Data Access Objects ,將“I would like to have DAOs created for me”的鉤選項去掉即可。
(6)在hibernate.cfg.xml檔案中新增對應的mapping resource。
在Package Explorer中選中Mobileuser.hbm.xml檔案,右鍵->Hibernate Synchronizer->Add Mapping Reference,即會在
hibernate.cfg.xml中自動生成如下配置:
(7)修改自動生成的hibernate.cfg.xml檔案。需要在hibernate.cfg.xml檔案的首部新增:
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
比較繁瑣的是,每次自動修改hibernate.cfg.xml檔案後,都要重新新增這個xml片斷。
萬事具備,現在可以寫個測試來檢驗一下了:
{
Configuration cfg =new Configuration().configure() ;
SessionFactory sFactory = cfg.buildSessionFactory() ;
Session session = sFactory.openSession() ;
Transaction tx = session.beginTransaction();
Mobileuser user = (Mobileuser)session.load(Mobileuser.class , new Integer(2)) ;
String age = user.getMobilenumber() ;
System.out.println(age) ;
tx.commit();
session.close() ;
}