JBoss-IDE 1.2.2 簡介 (Hibernate) 1-2

JBoss-IDE 1.2.2 簡介 (Hibernate) 1:

 

先要條件:

l          要完成 JBoss-IDE 1.2.2 教程 (http://www.csdn.net/develop/Read_Article.asp?id=25298), 和成功運行當中的例子, FiboBean ComputeServlet

l          JBoss, MySQL Hibernate 有一定的認識及下載 Hibernate 2.1.2 (http://prdownloads.sourceforge.net/hibernate/hibernate-2.1.2.zip?download) XDoclet (http://prdownloads.sourceforge.net/xdoclet/xdoclet-bin-1.2.zip?download)

 

說明:

l           我會繼續用 JBoss-IDE 教程裏的例子, 當中是一個 index.html call ComputeServlet invoke FiboBean 中的計算斐波納契數列 (Fibonacci, 即一種整數數列,其中每數等於前面兩數之和) function (compute). 而應用到 Hibernate 之後, 我會在 compute function 裏找出資料庫 (MySQL – test db) 中相關儲存計算 Fibonacci 結果後的資料 (Table - fibo), 如和輸入要求計算的數字是相同的話, 不用計算而在資料庫中拿取資料作為結果. 如不同即會清空資料庫中的資料, 再重新計算和存入資料庫中.

 

步驟:

1.          我會用 MySQL 創建一個 table 來儲存計算斐波納契數列的結果, 首先我會創建一個資料庫名命為 ‘test’, 再創建一個 table 名命為 ‘fibo’, ‘fibo’ 只有兩個 fields, 一是 id (varchar, PK), 一是 value (double). 最後在 JBoss default server 中設定這個 MySQL – test DataSource.

 

2.          下載 Hibernate 2.1.2 後請參考網上有關怎樣設定 Hibernate JBoss 裏的 sar 服務運行教程 (http://www.hibernate.org/66.html - 筆者按: 這條 link 好像死了, 不敢肯定, 可能Hibernate 已投入 JBoss , Hibernate 會在 4.0 的版本取代 CMP, 所以其實這篇簡介不是太有用, 只可當作參考.) (http://nemesisit.rdsnet.ro/opendocs/ejbhibernate.html). 複製 Hibernate 根目錄中的 hibernate2.jar lib 資料夾中的 ‘cglib-2.0-rc2.jar’, ‘commons-collections-2.1.jar’, ‘commons-lang-1.0.1.jar’, ‘commons-logging-1.0.3.jar’, ‘dom4j-1.4.jar’, ‘jcs-1.0-dev.jar’, ‘odmg-3.0.jar’, JBoss default server lib (%JBOSS_HOME/server/default/lib) 資料夾中. 完成後到 XDoclet, 下載後爆開它, 複製其 lib資料夾中的 ‘xdoclet-hibernate-module-1.2b4.jar’ eclipse資料夾中的 /plugins/org.jboss.ide.eclipse.xdoclet.core_1.2.2/ 資料夾裏, 因為這是外加 module XDoclet , 所以記得在 JBoss-IDE XDoclet Configure 中更新一下 XDoclet modules data.

 

3.          eclipse (我是用 2.1) 開啟 JBoss-IDE 教程裏 tutorial project, 右擊 tutorial project, ‘Properties’.

然後選 ‘Java Build Path’ -> ‘Libraries’ -> ‘Add External JARs’, JBoss default folder 裏的 ‘lib’ (%JBOSS_HOME%/server/default/lib/), ‘hibernate2.jar’, ’再按 ‘OK’.

 

4.          現在根據 Hibernate 跟來的教程來創建一個 HibernateUtil Class. 首先右擊 tutorial project -> ‘New’ -> ‘Class’, ‘Package’ 填入 ‘tutorial.hibernate’, Name 填入 ‘HibernateUtil’, 再按 ‘Finish’, 而代碼如下:

 

package tutorial.hibernate;

 

import javax.naming.Context;

import javax.naming.InitialContext;

import net.sf.hibernate.Session;

import net.sf.hibernate.SessionFactory;

import net.sf.hibernate.HibernateException;

 

public class HibernateUtil {

    private static SessionFactory sessionFactory;

   

    static {

        try {

            Context ctx = new InitialContext();

            sessionFactory = (SessionFactory) ctx.lookup("java:/hibernate/HibernateFactory");

        }

        catch (Exception e) {

            e.printStackTrace();

        }

    }

   

    public static final ThreadLocal session = new ThreadLocal();

   

public static Session currentSession() throws HibernateException {

        Session s = (Session) session.get();

        // Open a new Session, if this Thread has none yet

        if (s == null) {

            s = sessionFactory.openSession();

            session.set(s);

        }

        return s;

    }

   

    public static void closeSession() throws HibernateException {

        Session s = (Session) session.get();

        session.set(null);

        if (s != null)

            s.close();

    }

}


JBoss-IDE 1.2.2 簡介 (Hibernate) 2:

 

5.          完成後我們會再創建一個 Num Hibernate 屬性檔案來影射在資料庫中的 fibo table, 右擊 tutorial project -> ‘New’ -> ‘Class’, ‘Package’ 填入 ‘tutorial.hibernate’, Name 填入 ‘Num’, 再按 ‘Finish’. 當中會用到 XDoclet 中的 Hibernate 標籤, 因為這個例子用到Hibernate 標籤實在太簡單, 所以沒有特別為此創建 Hibernate 標籤的 Template. Hibernate id 生成會用 uuid, 代碼如下:

 

package tutorial.hibernate;

/**

 * @author patrick.ip

 *

 * @hibernate.class table="fibo"

 */

public class Num {

    private String id;

    private double value;

   

    public Num() {

    }

   

    /**

     * @hibernate.id generator-class="uuid.hex"

     */

    public String getId() {

        return id;

    }

    public void setId(String id) {

        this.id = id;

    }

 

    /**

     * @hibernate.property

     * @return double

     */

    public double getValue() {

        return value;

    }

   

    public void setValue(double value) {

        this.value = value;

    }

}

而應用這兩個 Classes 會在 FiboBean compute 方法裏, 首先要在 FiboBean.java 加上 Hibernate import:

 

package tutorial.ejb;

 

import java.rmi.RemoteException;

import java.util.Iterator;

 

import javax.ejb.EJBException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

import javax.ejb.CreateException;

 

// hibernate imports

import tutorial.hibernate.*;

import net.sf.hibernate.Query;

import net.sf.hibernate.Session;

import net.sf.hibernate.Transaction;

import net.sf.hibernate.HibernateException;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值