亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 8166 | 回復(fù): 10
打印 上一主題 下一主題

[原創(chuàng)]一個Hibernate的開發(fā)指南 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2003-12-26 10:32 |只看該作者 |倒序瀏覽
其實不只是Hibernate,還包括了Eclipse和MyEclipse的使用,以及Struts的內(nèi)容,會寫很多多的,現(xiàn)在只是一個開頭,這是第一篇:
http://bsd.huangdong.com/dev/hibernate/startup/startup.html

請高手及時指出不合理和合適的地方,我會及時改進(jìn)的。

論壇徽章:
0
2 [報告]
發(fā)表于 2003-12-26 10:39 |只看該作者

[原創(chuàng)]一個Hibernate的開發(fā)指南

頂一下,寫的挺好!thanks

論壇徽章:
0
3 [報告]
發(fā)表于 2003-12-26 10:57 |只看該作者

[原創(chuàng)]一個Hibernate的開發(fā)指南

鼓勵原創(chuàng)

這是你自己的論壇嘛?
希望有時間把全文都共享在CU資源庫

論壇徽章:
0
4 [報告]
發(fā)表于 2003-12-27 21:36 |只看該作者

[原創(chuàng)]一個Hibernate的開發(fā)指南

沒貼上來主要是:
圖很多,壇里貼圖好麻煩的
還有就是這個文章還沒完全的寫完,剛有一個朋友指出一點問題,我正在改呢。希望有一個stable版時再post上來,不過只是文字還是不太過隱的。
呵呵,這些日子在系這個系列,希望對struts和hibernate了解的兄弟多多指點一下。讓我能寫的更好

論壇徽章:
0
5 [報告]
發(fā)表于 2003-12-28 10:48 |只看該作者

[原創(chuàng)]一個Hibernate的開發(fā)指南

原帖由 "hdcola" 發(fā)表:
沒貼上來主要是:
圖很多,壇里貼圖好麻煩的
還有就是這個文章還沒完全的寫完,剛有一個朋友指出一點問題,我正在改呢。希望有一個stable版時再post上來,不過只是文字還是不太過隱的。
呵呵,這些日子在系這個系..........


黃先生我們是仰慕已久, 這的精華中好象也有轉(zhuǎn)的你寫的東東.

http://www.chinaunix.net/forum/viewtopic.php?t=15889

論壇徽章:
0
6 [報告]
發(fā)表于 2003-12-29 11:39 |只看該作者

[原創(chuàng)]一個Hibernate的開發(fā)指南

呵呵,這是很多年前的事了,不知為什么被大家翻了出來。當(dāng)時CCU的東東不少的,有些(包括這個)我都找不著了,反而被大家找了出來

論壇徽章:
0
7 [報告]
發(fā)表于 2003-12-29 20:31 |只看該作者

[原創(chuàng)]一個Hibernate的開發(fā)指南

ok有前途

論壇徽章:
0
8 [報告]
發(fā)表于 2004-01-03 08:14 |只看該作者

[原創(chuàng)]一個Hibernate的開發(fā)指南

附上內(nèi)容,但此文圖片眾多,最好還是看帶圖片的版本:
http://bsd.huangdong.com/dev/hibernate/startup/startup.html

前言
Hibernate做為一個非常優(yōu)秀且已經(jīng)被大量使用的數(shù)據(jù)庫持久層工具已經(jīng)越來越成熟了。 本文主要是針對使用Hibernate的開發(fā)者,本章節(jié)主要是說明在《Hibernate開發(fā)指南》中所使用到的開發(fā)環(huán)境的初步設(shè)置, 并使用一個簡單的例子以說明Hibernate已經(jīng)正常運行。

本文所主要使用的工具有:

JDK: JDK 1.4.2
開發(fā)集成環(huán)境: Eclipse 2.1.2
Hibernate 2.1
數(shù)據(jù)庫:Oracle 9i
Hibernate的Eclipse插件: Tanghan Plugin
請先看看你的機(jī)器上是否已經(jīng)安裝這些軟件,對于數(shù)據(jù)庫,只是因為我的機(jī)器上已經(jīng)安裝了Oracle,使用其它的數(shù)據(jù)庫不會有太大的差別的。 我的例子還使用了一個struts的框架,因為我認(rèn)為web應(yīng)用框架中struts是一個非常不錯的選擇,而加上Hibernate這個數(shù)據(jù)庫訪問層, 兩者相匹配能達(dá)到更好的效果。為了使用Struts,也請確認(rèn)你安裝了以下軟件:
Web應(yīng)用服務(wù)器: Tomcat 4.x
Struts 1.1包
Eclipse的J2EE集成插件: MyEclipse 2.7RC1 以上版本(2.7開始提供struts的支持)
如果你不想使用MyEclipse這個商用的插件,也可以使用lomboz和easystruts來代替它的功能。 具體的軟件安裝和插件安裝不在這里多說,以下我們來說說 它們安裝后的配置。

軟件配置
我們先來配置數(shù)據(jù)庫,同時記下數(shù)據(jù)庫開發(fā)時所需要的相關(guān)信息。

Oracle相關(guān)配置參數(shù)
我在Oracle中建立了一個單獨的用戶:HD,設(shè)置其密碼為:abc。為該用戶分配好相應(yīng)的數(shù)據(jù)庫空間, 細(xì)致的配置方法和信息不再多說,總之你需要得到類似下面的信息以備開發(fā)時所使用:

機(jī)器地址:hdibm(因為是在本機(jī)還可以使用localhost和127.0.0.1,如果是另一臺機(jī)器使用該機(jī)器的IP地址)
oracle的偵聽端口:1521
數(shù)據(jù)庫實例名:hdorc
訪問用戶名:hd
訪問密碼:abc
需要注意的是要給HD用戶分配至少Connect的角色。另外在他所使用的表空間中分配足夠或是無限制的限額大小,否則在開發(fā)時都會遇到問題。 除這些之外還需要你從安裝的Oracle或Oracle網(wǎng)站上下載最新的JDBC包,它有兩個包,其中一個是與JDK相關(guān)的驅(qū)動,另一個是多語言支持包(這里我們不使用OCI的驅(qū)動,使用Thin的驅(qū)動)。 因為我使用的JDK為1.4所以驅(qū)動包我使用了 ojdbc14.jar ,JDK1.4使用的多語言支持包與JDK1.2相同都是 nls_charset12.jar 。

在數(shù)據(jù)庫中我們建立一些表以用于程序開發(fā),以一個簡單的用戶管理為例我們先建立一個簡單的用戶表(sysuser):

表名:sysuser
用戶ID:userid(vchar:32)
用戶名:username(vchar:20)
用戶密碼:userpasword(vchar:20)
用戶最后登錄時間:lastlogin(date)
你也可以使用這個sql語句來創(chuàng)建表:
CREATE TABLE "HD"."SYSUSER" ("USERID" VARCHAR2(32) NOT NULL,
    "USERNAME" VARCHAR2(20) NOT NULL, "USERPASWORD" VARCHAR2(20)
    NOT NULL, "LASTLOGIN" DATE, PRIMARY KEY("USERID",
    UNIQUE("USERNAME")  
    TABLESPACE "USERS"
                               
Tomcat安裝
Tomcat的安裝則非常簡單了,從Tomcat網(wǎng)站上下載相關(guān)的安裝包,解到相關(guān)的目錄就可以了。安裝Tomcat之后你需要記下以下信息:

Tomcat的安裝目錄
Tomcat的偵聽端口(默認(rèn)為8080)

配置Hibernate for Eclipse的插件Tanghan Plugin
初次使用這個插件時會有許多人無從下手,主要是不知從哪里使用這個插件。 首先要打開這個插件提供的兩個視圖: Database Access View 和 Database Data View 。 通過菜單上的窗口 >; 顯示視圖 >; 其它來選擇這兩個視圖:


打開Database Access View視圖,我們來配置Oracle的驅(qū)動,用鼠標(biāo)右鍵點Oracle Thin Driver >; 修改驅(qū)動程序信息:


這里:

驅(qū)動名稱:Oracle Thin Driver
驅(qū)動程序包名:瀏覽選擇你的ojdbc14.jar文件
驅(qū)動程序類:oracle.jdbc.driver.OracleDriver
驅(qū)動程序前綴:jdbcracle:thin: < username >; @ < password >; // < server >; [: < 1521 >; ] / < database_name >; (這里是最新的驅(qū)動的URL書寫方法,具體的最好看一下相關(guān)Oracle驅(qū)動的有關(guān)URL的說明)
配置好驅(qū)動程序后我們來增加一個數(shù)據(jù)庫連接:


這里:

數(shù)據(jù)庫連接名:HDTestDB
驅(qū)動名稱:Oracle Thin Driver(就是在上面我們建立的)
驅(qū)動程序類:oracle.jdbc.driver.OracleDriver
數(shù)據(jù)庫連接:jdb cracle:thin:hd@abc//hdibm:1521/hdorc
用戶名:hd
密碼:abc
接下來我們試著連接一下數(shù)據(jù)庫:


需要我們再選擇Shemas,從下拉列表中選擇 HD ,按 確定 按鈕。 如果能看到選擇Shemas對話框,哪么說明你的數(shù)據(jù)庫配置就沒有什么問題了。 我們可以在Database Access View中看到庫中的表及表結(jié)構(gòu):


配置MyEclipse
從 MyEclipse的網(wǎng)站 上下載到最新的MyEclipse的試用版以及Struts相關(guān)的TLD和Lib包。 安裝完MyEclipse后,配置Tomcat的使用。主要是配置清楚tomcat的相關(guān)路徑就可以了:


需要注意的是tomcat一定要使用一個JDK,而不是JRE,在tomcat的配置樹中可以選擇一個JDK以供Tomcat啟動使用:


接下來將從網(wǎng)站上下載的Struts包解開到文件系統(tǒng)中(也可以手工將Struts 1.1包中的lib和tld拆出),在MyEclipse中配置好Struts 1.1的相關(guān)包:


這些配置完成我們就可以建立一個簡單的項目了。

建立初始的Struts項目
我們先建立一個項目,為后續(xù)的深入開發(fā)做準(zhǔn)備,這個項目是一個簡單的框架,導(dǎo)入Tomcat部署支持、建立與Struts和Hibernate的庫路徑。

建立Web應(yīng)用項目
首先使用向?qū)Ы⒁粋Web Module Project:


輸入Web Project的相關(guān)信 息:


按圖中所示一一輸入。點完成建立Project。

為項目加入Tomcat部署支持
接下來為項目加入Tomcat部署支持:


在彈出的對話框中點Add,并在下拉框中選中Tomcat 4:


為Web應(yīng)用加入Struts支持
再為項目加入Struts支持:


在彈出的對話框中按下圖輸入信息:


這樣就為Web應(yīng)用項目加入了Struts支持,這一步會自動為項目加入Struts的支持包和Struts需要使用的TLD文件(Tag Lib說明文件)。之后我們可以看到:


為Web應(yīng)用加入Hibernate支持
Hibernate中有大量的jar,不建議大家全部加入,以下是你必須加入的jar包(這些包除hibernate2.jar在根下其它都在lib子目錄中):

hibernate2.jar:Hibernate的核心庫。
cglib2.jar:Hibernate用來實現(xiàn)PO字節(jié)碼的動態(tài)生成時所需要的庫。
commons-collections.jar:Apache Commons提供的比java.util.*功能更強(qiáng)的集合類。
commons-lang.jar:Apache Commons提供了擴(kuò)展java.lang.*的功能。
commons-logging.jar:Apache Commons提供的一個通用日志接口工具。它會使用Log4j、JDK的java.util.logging、commons-logging的Simple Logger的順序來尋找可用的log API。
dom4j.jar:一個訪問XML的java接口實現(xiàn),Hibernate使用該包來完成XML的操作。
odmg.jar:ODMG是一個ORM的規(guī)范,Hibernate使用這個包實現(xiàn)了ODMG規(guī)范。
xalan.jar、xerces.jar和xml-apis.jar:XSLT處理器、SAX解析、標(biāo)準(zhǔn)JAXP API包,都是用于XML的處理。(大多應(yīng)用服務(wù)器帶有這三個包)
以下包依據(jù)你應(yīng)用中的情況做為選項可以加入,由你自己來定了:
c3p0.jar:C3PO數(shù)據(jù)庫連接池所使用的包。
commons-dbcp.jar和commons-pool.jar:Apache Commons提供的名為DBCP的數(shù)據(jù)庫連接池所使用的包。
jboss-cache.jar、concurrent.jar、jboss-common.jar、jboss-jmx.jar、jboss-system.jar:TreeCache所使用的包,它實現(xiàn)了一個可以集群的cache。
connector.jar:標(biāo)準(zhǔn)JCA API包。大多應(yīng)用服務(wù)器都帶了。
(*)ehcache.jar:EHCache cache包,Hibernate默認(rèn)使用這個包來完成cache功能。
jaas.jar:標(biāo)準(zhǔn)JAAS API包。大多應(yīng)用服務(wù)器也帶有這個包,這個包是供JCA來使用的。(JDK 1.4也已經(jīng)包含這個包了)
jcs.jar:JCS cache包。
jdbc2_0-stdext.jar:標(biāo)準(zhǔn)JDBC 2.0 API擴(kuò)展包。大多應(yīng)用服務(wù)器也包含了這個包。
swarmcache.jar和jgroups.jar:SwarmCache可復(fù)制的分布式Cache所使用的包。它使用JavaGroups進(jìn)行組通訊,適合于集群環(huán)境的數(shù)據(jù)庫應(yīng)用Cache。
(*)jta.jar:標(biāo)準(zhǔn)JTA API包。大多數(shù)應(yīng)用服務(wù)器也帶有這個包。
log4j.jar:Log4包,Log4j是Logger工具中一個非常好的選擇。
oscache.jar:由OpenSymphony所提供的OSCache包,用于數(shù)據(jù)庫的Cache。
proxool.jar:Proxool JDBC數(shù)據(jù)庫連接池包。
還有一些其它的包,都不是運行時刻所使用的包,附在這里以做了解了:
ant.jar:編譯Hibernat時使用的ant核心包。
junit.jar:JUnit測試框架包,編譯時為測試代碼進(jìn)行測試所使用的。
optional.jar:Ant使用的輔助包,包括了一些附加的task。
加入包的方法很簡單,使用資源管理器將jar文件拖入web目錄下的WEB-INF中的lib目錄就可以了。 MyEclipse會自動將該目錄中的所有的jar文件加入到project的編譯classpath中去的。 注意,除必須的包之外,前面有(*)的包也請加入到項目中去。由于是使用Tomcat,在必須的包中的有關(guān)XML包也可以不加入。如下圖:

為Web應(yīng)用加入JDBC驅(qū)動包
將之前準(zhǔn)備好的Oracle驅(qū)動包也加入到Web項目中。主要是這兩個文件:

nls_charset12.jar
ojdbc14.jar
下圖是配置到最后所有的包的列表,也請大家一一核對:


配置Hibernate的配置文件
配置Hibernate數(shù)據(jù)庫連接配置
數(shù)據(jù)庫的連接配置很簡單,在項目的 src目錄 下建立一個xml文件,名為 hibernate.cfg.xml 。這個文件的內(nèi)容為:

<?xml version='1.0' encoding='UTF-8'?>;
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">;

<hibernate-configuration>;

    <session-factory>;

        <property name="dialect">;net.sf.hibernate.dialect.Oracle9Dialect</property>;
        <property name="connection.driver_class">;oracle.jdbc.driver.OracleDriver</property>;
        <property name="connection.username">;hd</property>;
        <property name="connection.password">;abc</property>;
        <property name="connection.url">;jdbcracle:thinlocalhost:1521:hdorc</property>;
        
                <property name="connection.pool.size">;1</property>;
                <property name="statement_cache.size">;25</property>;
                <property name="jdbc.fetch_size">;50</property>;
                <property name="jdbc.batch_size">;30</property>;

                <property name="show_sql">;true</property>;
               
        <!-- Mapping files -->;
        <mapping resource="com/huangdong/demo/dao/SysUser.hbm.xml"/>;

    </session-factory>;

</hibernate-configuration>;
                                我們對這里的各個property元素一一說明:

dialect:使用了Oracle9的對照
connection.driver_class:Oracle的JDBC驅(qū)動類名
connection.username:Oracle數(shù)據(jù)庫訪問用戶名
connection.password:Oracle數(shù)據(jù)庫訪問密碼
connection.url:Oracle數(shù)據(jù)庫訪問URL
connection.pool.size:數(shù)據(jù)庫連接池大小
statement_cache.size:JDBC statement緩沖大小
jdbc.fetch_size:設(shè)定JDBC的Statement讀取數(shù)據(jù)的時候每次從數(shù)據(jù)庫中取出的記錄條數(shù)
jdbc.batch_size:設(shè)定對數(shù)據(jù)庫進(jìn)行批量刪除,批量更新和批量插入的時候的批次大小
show_sql:設(shè)定是否在控制臺上顯示向數(shù)據(jù)庫提交的SQL語句,在開發(fā)調(diào)試時比較有用
提下來的mapping resource則是我們對數(shù)據(jù)庫表的一個個的映射文件的清單,我們下面會對SYSUSER表進(jìn)行映射,所以現(xiàn)在就已經(jīng)加了進(jìn)去。 而這個xml會放在com.huangdong.demo.dao包中,所以要把load時的路徑也寫進(jìn)來。

配置Hibernate表映射
在Database Access View中選擇SYSUSER表,在菜單中選擇生成HBM文件:


在向?qū)υ捒蛑邪聪聢D輸入相關(guān)信息:


按完成按鈕后,就會在com.huangdong.demo.dao包中生成SysUser類和SysUser.hb.xml文件。

由于在Java中使用java.util.Date有很多不方便的地方,所以我將lastlogin的映射后的java屬性改為了calendar。

這是修改后的SysUser.hbm.xml文件:

<?xml version="1.0" encoding="UTF-8"?>;
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">;
<hibernate-mapping>;
        <class name="com.huangdong.demo.dao.SysUser" table="SYSUSER">;
                <id column="userid" length="32" name="userid" type="string">;
                        <generator class="uuid.hex"/>;
                </id>;
                <property column="username" length="20" name="username" not-null="true" type="string" unique="true"/>;
                <property column="userpasword" length="20" name="userpasword" not-null="true" type="string"/>;
                <property column="lastlogin" length="7" name="lastlogin" type="calendar"/>;
        </class>;
</hibernate-mapping>;
                                這是修改后的SysUser.java文件:

package com.huangdong.demo.dao;

import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

/** @author Hibernate CodeGenerator */
public class SysUser implements Serializable {

    /** identifier field */
    private String userid;

    /** persistent field */
    private String username;

    /** persistent field */
    private String userpasword;

    /** nullable persistent field */
    private java.util.Calendar lastlogin;

    /** full constructor */
    public SysUser(java.lang.String username, java.lang.String userpasword, java.util.Calendar lastlogin) {
        this.username = username;
        this.userpasword = userpasword;
        this.lastlogin = lastlogin;
    }

    /** default constructor */
    public SysUser() {
    }

    /** minimal constructor */
    public SysUser(java.lang.String username, java.lang.String userpasword) {
        this.username = username;
        this.userpasword = userpasword;
    }

    public java.lang.String getUserid() {
        return this.userid;
    }

        public void setUserid(java.lang.String userid) {
                this.userid = userid;
        }

    public java.lang.String getUsername() {
        return this.username;
    }

        public void setUsername(java.lang.String username) {
                this.username = username;
        }

    public java.lang.String getUserpasword() {
        return this.userpasword;
    }

        public void setUserpasword(java.lang.String userpasword) {
                this.userpasword = userpasword;
        }

    public java.util.Calendar getLastlogin() {
        return this.lastlogin;
    }

        public void setLastlogin(java.util.Calendar lastlogin) {
                this.lastlogin = lastlogin;
        }

    public String toString() {
        return new ToStringBuilder(this)
            .append("userid", getUserid())
            .toString();
    }

    public boolean equals(Object other) {
        if ( !(other instanceof SysUser) ) return false;
        SysUser castOther = (SysUser) other;
        return new EqualsBuilder()
            .append(this.getUserid(), castOther.getUserid())
            .isEquals();
    }

    public int hashCode() {
        return new HashCodeBuilder()
            .append(getUserid())
            .toHashCode();
    }

}
                                建立測試用的Servlet
創(chuàng)建Servlet框架
使用新建Servlet的向?qū)覀儊斫⒁粋測試用的Servlet,下圖是新建Servlet時輸入的參數(shù)和選項:


在下一步的XML Wizard對話框中記得將 Display Name 和 Description 的“Test System Function Servlet”都清除,如下圖所示:


這樣就建立了一個初始的Servlet框架。

編寫數(shù)據(jù)庫連接獲取類
我們編寫一個單獨的類,用于從SessionFactory中獲取數(shù)據(jù)庫連接session。這個類名為HibernateUtil,我們將其放于com.huangdong.demo.util包中,具體的代碼如下:

package com.huangdong.demo.util;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;

public class HibernateUtil {

        private static final SessionFactory sessionFactory;

        static {
                try {
                        sessionFactory =
                                new Configuration().configure().buildSessionFactory();
                } catch (HibernateException ex) {
                        throw new RuntimeException(
                                "Exception building SessionFactory: " + ex.getMessage(),
                                ex);
                }
        }

        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();
        }
}
                                我們可以通過currentSession方法來獲取數(shù)據(jù)庫連接,如果系統(tǒng)中有可用的session就會反回可用的,如果沒有時才會創(chuàng)建一個新的session。當(dāng)session操作完成后,需要操作者使用closeSession方法釋放使用的session。

建立測試Bean
接下來我們建立一個TestHibernate的Java Bean,主要加入一些Hibernate的測試方法,以下是建立該類所輸入的相關(guān)信息:


我們?yōu)樵擃惣尤胍粋向數(shù)據(jù)庫中增加數(shù)據(jù)的方法:

        public boolean TestAdd() {
                try {
                        Session session = HibernateUtil.currentSession();
                        Transaction tx = session.beginTransaction();
                        SysUser user = new SysUser();
                        user.setUsername("丫丫";
                        user.setUserpasword("uhkuhkqepdwqi";
                        user.setLastlogin(Calendar.getInstance());
                        session.save(user);
                        tx.commit();
                        HibernateUtil.closeSession();
                } catch (HibernateException e) {
                        e.printStackTrace();
                        return false;
                }
                return true;
        }
                                第一次我寫這個代碼時感到非常的意外,總感覺應(yīng)該再多寫點什么,但是真的是這 樣,我們只用了這么幾句話就向數(shù)據(jù)庫加入了一條記錄。

在Servlet中調(diào)用TestAdd方法
這就很簡單了,更改TestServlet.java類的doGet方法,初始化TestHibernate類,并調(diào)用TestAdd方法就可以了:

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {

                response.setContentType("text/html; charset=GBK";
                PrintWriter out = response.getWriter();
                out.println(
                        "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">;";
                out.println("<HTML>;";
                out.println("  <HEAD>;<TITLE>;A Servlet</TITLE>;</HEAD>;";
                out.println("  <BODY>;";
               
                //調(diào)用Test Add
                TestHibernate test = new TestHibernate();
                out.println("TestAdd:" + test.TestAdd() + "<p>;";
               
                out.println("  </BODY>;");
                out.println("</HTML>;");
                out.flush();
                out.close();
        }
                                如果TestAdd方法執(zhí)行成功則會在頁面上返回True,否則會返回False。下面我們就來測試一把。

測試我們第一個基于Servlet的Hibernate應(yīng)用
啟動Tomcat
如果之前按本文配置好了Tomcat的部署,哪么這里就不會有任何問題,如圖操作則會進(jìn)入Eclipse的調(diào)試視圖:


在Debug視圖中看到所有的線程啟動,并在控制臺窗口中看到“Starting Coyote HTTP/1.1 on port 8080”則說明Tomcat啟動成功并偵聽了8080端口,如下圖:


打開瀏覽器,在地址欄中輸入:

http://localhost:8080/Demo/servlet/TestServlet
                                如果返回的頁面如下圖所示,則代表數(shù)據(jù)庫更新成功:


同時在Eclipse的控制臺中我們可以看到Hibernate的log輸出,說明了它工作的細(xì)節(jié)情況 :

2003-12-26 15:10:37 net.sf.hibernate.cfg.Environment <clinit>;
信息: Hibernate 2.1.1
2003-12-26 15:10:37 net.sf.hibernate.cfg.Environment <clinit>;
信息: hibernate.properties not found
2003-12-26 15:10:37 net.sf.hibernate.cfg.Environment <clinit>;
信息: using CGLIB reflection optimizer
2003-12-26 15:10:37 net.sf.hibernate.cfg.Configuration configure
信息: configuring from resource: /hibernate.cfg.xml
2003-12-26 15:10:37 net.sf.hibernate.cfg.Configuration getConfigurationInputStream
信息: Configuration resource: /hibernate.cfg.xml
2003-12-26 15:10:38 net.sf.hibernate.cfg.Configuration addResource
信息: Mapping resource: com/huangdong/demo/dao/SysUser.hbm.xml
2003-12-26 15:10:38 net.sf.hibernate.cfg.Binder bindRootClass
信息: Mapping class: com.huangdong.demo.dao.SysUser ->; SYSUSER
2003-12-26 15:10:39 net.sf.hibernate.cfg.Configuration doConfigure
信息: Configured SessionFactory: null
2003-12-26 15:10:39 net.sf.hibernate.cfg.Configuration secondPassCompile
信息: processing one-to-many association mappings
2003-12-26 15:10:39 net.sf.hibernate.cfg.Configuration secondPassCompile
信息: processing one-to-one association property references
2003-12-26 15:10:39 net.sf.hibernate.cfg.Configuration secondPassCompile
信息: processing foreign key constraints
2003-12-26 15:10:39 net.sf.hibernate.dialect.Dialect <init>;
信息: Using dialect: net.sf.hibernate.dialect.Oracle9Dialect
2003-12-26 15:10:39 net.sf.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC result set fetch size: 50
2003-12-26 15:10:39 net.sf.hibernate.cfg.SettingsFactory buildSettings
信息: Use outer join fetching: true
2003-12-26 15:10:39 net.sf.hibernate.connection.DriverManagerConnectionProvider configure
信息: Using Hibernate built-in connection pool (not for production use!)
2003-12-26 15:10:39 net.sf.hibernate.connection.DriverManagerConnectionProvider configure
信息: Hibernate connection pool size: 20
2003-12-26 15:10:39 net.sf.hibernate.connection.DriverManagerConnectionProvider configure
信息: using driver: oracle.jdbc.driver.OracleDriver at URL: jdbcracle:thinlocalhost:1521:hdorc
2003-12-26 15:10:39 net.sf.hibernate.connection.DriverManagerConnectionProvider configure
信息: connection properties: {user=hd, password=abc, pool.size=1}
2003-12-26 15:10:39 net.sf.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
信息: No TransactionManagerLookup configured (in JTA environment, use of process level read-write cache is not recommended)
2003-12-26 15:10:45 net.sf.hibernate.cfg.SettingsFactory buildSettings
信息: Use scrollable result sets: true
2003-12-26 15:10:45 net.sf.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC 2 max batch size: 30
2003-12-26 15:10:45 net.sf.hibernate.cfg.SettingsFactory buildSettings
信息: echoing all SQL to stdout
2003-12-26 15:10:45 net.sf.hibernate.cfg.SettingsFactory buildSettings
信息: Query language substitutions: {}
2003-12-26 15:10:45 net.sf.hibernate.cfg.SettingsFactory buildSettings
信息: cache provider: net.sf.ehcache.hibernate.Provider
2003-12-26 15:10:45 net.sf.hibernate.cfg.Configuration configureCaches
信息: instantiating and configuring caches
2003-12-26 15:10:46 net.sf.hibernate.impl.SessionFactoryImpl <init>;
信息: building session factory
2003-12-26 15:10:47 net.sf.hibernate.impl.SessionFactoryObjectFactory addInstance
信息: no JNDI name configured
Hibernate: insert into SYSUSER (username, userpasword, lastlogin, userid) values (?, ?, ?, ?)
                                在最后我們可以看到Hibernate生成的數(shù)據(jù)庫操作語句。走到這里可以說你已經(jīng)成功的運行了許多東西。讓我們再列出來,請你一一考慮一下它們是如何被你運行和部署起來的,它們有什么:

Eclipse
MyEclipse
Tomcat
Oracle/Oracle JDBC Driver
Hibernate
Struts(其實到現(xiàn)在我們還沒有使用到它的功能)
查看表中的數(shù)據(jù)是否更新
在Database Access View中可以很方便的查看數(shù)據(jù)表中的數(shù)據(jù):


這樣就在Database Data View中看到了SYSUSER表中的數(shù)據(jù):


留在最后的話
本文只是簡單的給大家介紹了開發(fā)基于Java的Web應(yīng)用的基礎(chǔ)環(huán)境,同時介紹了一系列的開發(fā)工具和組件。 這些工具還有更多的功能,這里就不再一一介紹了,請大家多參考Eclipse、MyEclipse的說明文檔,它們還有許多豐富的功能。 對于Struts和Hibernate這兩個強(qiáng)大的組件最在后續(xù)的文章中再慢慢說明。

如果你對本文有什么意見和建議請 聯(lián)系我 ,告訴我你的想法,另外也可以到 技術(shù)天空BBS的Java版 中討論與Java相關(guān)的各種技術(shù)。

你可以從 這里 下載到完整的Eclipse Project包。

另外本文中的所有代碼在以下環(huán)境中由作者實際測試完全沒有問題:

Eclipse 2.1.2
Struts 1.1
Hibernate 2.1.1
Tomcat 4.1.29/Jetty 4.2.15
com.tanghan.plugin_0.1.0.12.21
JDK 1.4.2_02 For Windows/FreeBSD 4.8/FreeBSD 4.9
FreeBSD 4.8/FreeBSD 4.9/Windows 2000/Windows XP
Oracle 9.2.0.1.0

論壇徽章:
0
9 [報告]
發(fā)表于 2010-09-23 01:07 |只看該作者
謝謝奉獻(xiàn)精神

論壇徽章:
0
10 [報告]
發(fā)表于 2010-09-24 22:08 |只看該作者
好東西
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP