手動配置及開發Hibernate

這篇文章主要談談Hibernate的入門開發,例子很簡單,就是向數據表中添加用戶名和密碼。我分別使用了三種方法,一種是直接寫代碼,寫Hbm映射文件等;一種是通過Hbm映射文件來生成代碼;一種是通過代碼來生成Hbm映射文件。使用了一些自動化工具,XMLBuddy是用來編輯XML文件的,JBoss Eclipse IDE是用來編寫Doclet標記的。這篇文章還談到了一些Eclipse的使用技巧,比如建立“用戶庫”、“生成 Getter 和 Setter”等。
 
   關於一些軟件的使用技巧,我以前的文章都有提及,這裏不多說了,必要時會提示一下。
   
 
 
1. 所需軟件
Ant 1.6.2        http://ant.apache.org
 
 Eclipse 3.0.1 及 語言包
 
 
XMLBuddy          http://www.xmlbuddy.com/
    下載             XMLBuddy 2.0.38   
 
   看看說明,需要挑選與使用的eclipse相對應的版本,這裏選擇JBossIDE-1.4.1-e30.zip,這是它的鏡像下載地址:
 
Hibernate         http://www.hibernate.org/
     下載            Hibernate 2.1.8
 
   同時也要把 Hibernate Extensions 2.1.3 下載了,它包含一些工具類。
 
 
●  MySQL 4.1.8
     注意需要mysql-connector-java-3.0.16-ga-bin.jar文件
 
 
 
2. 安裝和配置 
 
    這裏着重指出一下,需要在環境變量中設置 ANT_HOME ,並將其指向Ant安裝目錄,還要在Path變量值中添加 “%ANT_HOME%/bin;” 可以參考 java環境變量設置
 
 · XMLBuddy 和Jboss-ide 我都是採用links方式安裝的,
 
●  建立庫文件夾:
 
   在D盤下新建一個java目錄,在此目錄下新建一個Hibernate子目錄,在此子目錄下再新建一個lib子目錄。
D:/
  -java
     -Hibernate
               -lib
 · 將下載的hibernate-2.1.8.zip解壓,如解壓後的目錄名爲hibernate-2.1,將這個目錄下的hibernate2.jar複製到先前建立的lib目錄下,即D:/java/Hibernate/lib目錄;
 
 · 然後將hibernate-2.1目錄下的lib子目錄中的以下文件也複製到這個lib目錄下:
jta.jar  cglib-full-2.0.2.jar  commons-collections-2.1.1.jar  commons-logging-1.0.4.jar commons-lang-1.0.1.jar  dom4j-1.4.jar ehcache-0.9.jar log4j-1.2.8.jar odmg-3.0.jarodmg-3.0.jar
 
 · 解壓hibernate-extensions-2.1.3.zip將其子目錄tools中的hibernate-tools.jar和子目錄lib中的velocity-1.3.1.jar、jdom.jar 也複製到D:/java/Hibernate/lib目錄中
 
 · 解壓xdoclet-bin-1.2.2.zip,將其子目錄lib中的xdoclet-1.2.2.jar、xdoclet-hibernate-module-1.2.2.jar、xjavadoc-1.1.jar、xdoclet-xdoclet-module-1.2.2.jar 也複製到D:/java/Hibernate/lib目錄中
 
· 最後將mysql-connector-java-3.0.16-ga-bin.jar文件複製到這個lib目錄下。
 
   這樣,需要用到的庫文件已經準備好了,如果認爲這樣比較麻煩,也可以將jar文件全部複製到lib目錄。下面介紹如何在Eclipse中設置“用戶庫”。
 
 
 
●  設置“用戶庫”
 
·窗口 ->首選項 ->Java ->構建路徑 ->用戶庫,
 
· 然後單擊“添加JAR”
 
   這樣,一個用戶庫文件就做好了,如果要更新Eclipse時,可以將其先導出,然後再導入即可。
這樣做,對庫文件便於管理,而且如果需要替換或者升級的話都比較方便。
 
 
●  設置“構建路徑”
 
· 點擊菜單“窗口”->首選項,以下都在“首選項”中配置:
   Java->構建路徑
  
 
 
 
 
 
    這裏以一個簡單的程序來示範Hibernate的配置與功能,在這個例子中的一些操作,實際上會使用一些自動化工具來完成,而不一定親自手動操作設定,這邊完全手動的原因,在於讓你可以知道Hibernate的基本流程。
     這是整個項目的結構:
 
好了,下面就開始創建項目了。
  
 
1. 創建項目
 
· 新建一個Java項目:HibernateBegin_1,注意選中“創建單獨的源文件夾和輸出文件夾”。點擊“下一步”,切換到“庫”,點擊“添加庫”,如下圖:
 
· 選擇“用戶庫”
 
· 勾選先前設置好的hibernate用戶庫。
 
 
2. 建立可持久化類 
 
· 下面開始創建一個新類:User ;包名:javamxj.hibernate
然後添加三個變量(斜體),代碼如下:
/*  * 採用常規方法開發一個簡單的Hibernate實例 * 創建日期 2005-3-31 * @author javamxj(分享java快樂) * @link  Blog: htpp://javamxj.mblogger.cn   *              htpp://blog.csdn.net/javamxj/  */package javamxj.hibernate;public class User {    private int id;    private String username;    private String password;	}
· 點擊工具欄上的“源代碼(S)”,選擇其中的“生成 Getter 和 Setter”(右擊,在彈出菜單也可選擇),如圖:
 
點擊“確定”後,生成如下代碼:
/*  * 採用常規方法開發一個簡單的Hibernate實例 * 創建日期 2005-3-31 * @author javamxj(分享java快樂) * @link  Blog: htpp://javamxj.mblogger.cn   *                 htpp://blog.csdn.net/javamxj/  */package javamxj.hibernate;public class User {    private int id;    private String username;    private String password;		public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}	public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username;	}}
 
    好了,這個類完成了。它是一個普通的Java對象(Plain Old Java Objects,就是POJOs,有時候也稱作Plain Ordinary Java Objects),表示一個數據集合。下面建立一個Hbm文件將這個類映射到數據庫的表格上。
 
 
3. 映射文件
 
   在javamxj.hibernate包下,新建一個名稱爲“User.hbm.xml”的文件,使用XMLBuddy編輯它(參考:利用XMLBuddy在Eclipse中開發XML ),這樣比較方便。文件內容如下:
<?xml version="1.0" encoding="GBK"?><!DOCTYPE hibernate-mapping    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">	<hibernate-mapping>    <class name="javamxj.hibernate.User" table="UserTable">        <id name="id">            <generator class="assigned" />        </id>        <property name="username"  />        <property name="password" />		    </class></hibernate-mapping>
    這個XML文件定義了對象屬性映射到數據庫表的關係,這裏採用了assigned(程序設置)方式生成主鍵。當然還可以使用其它的方式來產生主鍵,後面的文章就採用了其它的方式產生主鍵。
 
   <property>標籤用於定義Java對象的屬性,這裏只定義了最簡單的方式,由Hibernate自動判斷Java對象屬性與數據庫表名稱對應關係。在<property/>標籤上的額外設定(像是not null、sql-type等),則可以用於自動產生Java對象與數據庫表的工具上。

 
 
4. 配置文件
 
   Hibernate可以使用XML或屬性文件來進行配置,配置文件名默認爲“hibernate.cfg.xml”(或者hibernate.properties)。
   在src目錄下,新建一個hibernate.cfg.xml文件,內容如下:(PS:這裏的文件的放置路徑也許不對)
<?xml version='1.0' encoding='GBK'?><!DOCTYPE hibernate-configuration    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><hibernate-configuration>    <session-factory>        <!-- 是否將運行期生成的SQL輸出到日誌以供調試 -->        <property name="show_sql">true</property>		        <!-- SQL方言,這裏設定的是MySQL -->        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>		        <!-- JDBC驅動程序 -->        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>		        <!-- JDBC URL, "?useUnicode=true&amp;characterEncoding=GBK" 表示使用GBK進行編碼 -->        <property name="connection.url">	  jdbc:mysql://localhost:3306/HibernateTest?useUnicode=true&amp;characterEncoding=GBKproperty>		        <!-- 數據庫用戶名 -->        <property name="connection.username">root</property>		        <!-- 數據庫密碼 -->        <property name="connection.password">javamxj</property>        <!-- 指定User的映射文件 -->        <mapping resource="javamxj/hibernate/User.hbm.xml"/>           </session-factory></hibernate-configuration>
 
注意:這裏使用的是“jdbc:mysql://localhost:3306/HibernateTest?useUnicod...”中的HibernateTest數據庫,你需要在MySql中建立這個數據庫。
 
 
5. 測試程序
 
   在javamxj.hibernate包下,新建一個Test類,內容如下:
/*  * 簡單測試一下User類 * 創建日期 2005-3-31 * @author javamxj(分享java快樂) */package javamxj.hibernate;import net.sf.hibernate.*;import net.sf.hibernate.cfg.*;public class Test {	public static void main(String[] args) {		try {			SessionFactory sf = new Configuration().configure()					.buildSessionFactory();			Session session = sf.openSession();			Transaction tx = session.beginTransaction();			User user = new User();			user.setUsername("Blog");			user.setPassword("分享java快樂");			session.save(user);			tx.commit();			session.close();		} catch (HibernateException e) {			e.printStackTrace();		}	}}
 
   這裏簡單說說一下流程,首先初始化Configuration,加載Hibernate的配置信息,然後Configuration取得SessionFactory對象,並由它來開啓一個Session,它代表對象與表格的一次會話操作,而 Transaction則表示一組會話操作,我們只需要直接操作User對象,並進行Session與Transaction的相關操作, Hibernate就會自動完成對數據庫的操作。
 
 
6. 配置數據庫
 
   在運行測試程序之前,還必須先設置好數據庫。
   在MySQL中建立一個HibernateTest數據庫,並建立UserTable表,SQL語句如下:
 
CREATE TABLE usertable (
  ID int(6) NOT NULL auto_increment,
  username varchar(24) NOT NULL default '',
  password varchar(24) NOT NULL default '',
  PRIMARY KEY  (ID)
);
    這裏,HibernateTest與hibernate.cfg.xml配置文件中的HibernateTest相對應,UserTable與hbm映射文件中的UserTable相對應。
 
 
7. 運行程序
 
   右擊Test.java,點擊運行,可以看到控制檯輸出一系列信息,最後一條輸出語句應該是:
Hibernate: insert into UserTable (username, password, id) values (?, ?, ?)
   在下篇文章中會介紹如何利用log4j來控制輸出信息。
 
   同時,在數據庫中可以看到,數據已經添加進表裏了:
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章