亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hibernate.doc

?? hibernate配置的心得體會 希望對大家有些幫組
?? DOC
?? 第 1 頁 / 共 2 頁
字號:
?

當前位置:首頁 — 體育新聞 — Hibernate實例 

內容搜索
窗體頂端


請輸入要搜索的內容:

? 
窗體底端


相關信息

·[圖]使用開源項目(struts+hibernate+spring)構架web應用架構(四)?[2004-8-4]
·Hibernate實例?[2004-5-26]

?? Hibernate實例
對象、關系的映射(ORM)是一種耗時的工作,在Java環境下,有幾種框架來表示持久數據,如實體Bean、OJB、JDO、Hibernate等。Hibernate是一種新的ORM映射工具,它不僅提供了從Java類到數據表的映射,也提供了數據查詢和恢復等機制。本文介紹怎么在Web應用開發中配置Hibernate的環境,并且使用Hibernate來開發一個具體的實例。


閱讀本文前您需要以下的知識和工具:


* Tomcat 5.09,可以從 www.apache.org 下載;
* Hibernate2.0 相關運行環境,可以從 http://hibernate.bluemars.net/ 下載;


* 至少一個數據庫服務器并且有相關的JDBC驅動程序。

介紹


面向對象的開發方法是當今的主流,但是同時我們不得不使用關系型數據庫,所以在企業級應用開發的環境中,對象、關系的映射(ORM)是一種耗時的工作。圍繞對象關系的映射和持久數據的訪問,在Java領域中發展起來了一些API和框架,下面分別簡單介紹。

JDBC可以說是訪問持久數據層最原始、最直接的方法。在企業級應用開發中,我們可能使用DAO(Data Access Object)模式來把數據訪問封裝起來,然后在其它的層中同一調用。這種方式的優點是運行效率最高,缺點是把DAO對象和SQL語言緊密耦合在一起使得在大項目中難以維護。但是不管怎么說,使用JDBC來直接訪問持久數據層是當今企業級應用開發中使用最廣泛的。

實體Bean是J2EE平臺中用來表示和訪問持久數據的方式。雖然實體Bean是一種方便快捷的方法,但是在運行時我們需要額外購買EJB容器(當然,如今也有免費的EJB容器,如JBOSS),并且使用不同的應用服務器,需要重新書寫不同的部署描述,使得在不同應用服務器下移植企業級應用會帶來一些困難。

另外,在Java領域中,還有一些表示持久數據的框架,比如JDO和OJB,在這里就不詳細介紹了。

Hibernate是一種新的ORM映射工具,它不僅提供了從Java類到數據表之間的映射,也提供了數據查詢和恢復機制。相對于使用JDBC和SQL來手工操作數據庫,使用Hibernate,可以大大減少操作數據庫的工作量。

Hibernate可以和多種Web服務器或者應用服務器良好集成,如今已經支持幾乎所有的流行的數據庫服務器(達16種)。

下面我們來介紹怎么結合Hibernate2.0和Apache Tomcat5.0在Web應用中使用Hibernate。

配置

1、 下載安裝Tomcat,并且下載Hibernate的運行環境(主要包含一些JAR包)。

2、 把要使用的數據庫的JDBC驅動程序拷貝到%TOMCAT_HOME%\common\lib目錄下。筆者使用的是MYSQL,對應的驅動程序的JAR包為mm.mysql-2.0.4-bin.jar。

3、 在Tomcat的Webapps目錄下新建一個Web應用,名字為hibernate。

4、 把Hibernate提供的hibernate2.jar和一些第三方的運行庫拷貝到hibernate\WEB\INF\lib目錄下。(這些第三方的運行庫包含在下載的Hibernate lib目錄下)

5、 在%TOMCAT_HOME%\conf\server.xml中Web應用和數據源。在server.xml中加入以下的配置描述。

例程1 配置web應用





<Context path="/hibernate" docBase="hibernate" debug="0"   reloadable="true" crossContext="true"> 

<Resource name="jdbc/hibernate" auth="Container" type="javax.sql.DataSource"/>   

     <ResourceParams name="jdbc/hibernate">	

     	<parameter>		

     	    <name>factory</name>		

     		<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>		

     	</parameter>

     	<parameter>		

    	    <name>driverClassName</name>		

     		     <value>org.gjt.mm.mysql.Driver</value>		

     	 </parameter>	

     	  <parameter>	

     		  	    <name>url</name>		

     		  	    <value>jdbc:mysql:///test</value>   

         </parameter>		

     	 <parameter>	

     	 	    <name>username</name>	

     	    	<value>root</value>	

     	 </parameter>		

     	<parameter>	

	        <name>password</name>		

	        <value></value>	

          </parameter>		

     	<parameter>	

		    <name>maxActive</name>	

		    <value>20</value>	

		  </parameter>

         <parameter>		

     		 <name>maxIdle</name>		

	          <value>10</value>

		  </parameter>	

		  <parameter>	

     	    <name>maxWait</name>	

		    <value>-1</value>	

		  </parameter>		

    </ResourceParams>   

  </Context>


在這里,配置了一個名為hibernate的Web應用,并且配置了一個數據源,數據源的JNDI名稱為jdbc/hibernate。您需要根據情況修改數據源的鏈接屬性。

6、 下一步就是書寫Hibernate的配置描述符。可以使用XML的配置描述,也可以使用基于屬性的配置描述。在這里使用基于XML的配置描述。在hibernate\WEB-INF\classes目錄下新建一個hibernate.cfg.xml文件。然后加入例程2所示的內容。





<!DOCTYPE hibernate-configuration

    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">



<hibernate-configuration>

    <session-factory>

        <property name="connection.datasource">java:comp/env/jdbc/hibernate</property>

        <property name="show_sql">false</property>

        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>



        <!-- Mapping files -->

        

    </session-factory>



</hibernate-configuration>


注意connection.datasource屬性必須和server.xml中配置的數據源的屬性一樣。如果不是使用MYSQL,那么需要更改dialect屬性。

到現在,配置基本完成,下面我們來開發一個最簡單的應用。

開發持久對象、編寫映射描述


我們使用hibernate來封裝一個簡單的數據表。這個表的名字為Courses,它有兩個字段,一個是ID,它是Courses表的主鍵;另一個是name,表示Courses的名字。在數據庫中使用以下的腳本來創建這個表:

create table Courses(CourseId varchar(32) not null, name varchar(32), constraint pk_Courses primary key (CourseId) );

接下來的任務就是為Courses表書寫持久對象,如例程3所示。

例程3 Courses的持久對象(Courses.java)





package com.hellking.study.hibernate;



import java.util.Set;



/**

 *在hibernate中代表了Course表的類。

 */

public class Course 

{

   /**每個屬性和表的一個字段對應**/

   private String id;

   private String name;

   

   /**students表示course中的學生,在后面才會用到,暫時不管**/

   private Set students;

   	

    /**屬性的訪問方法**/

	public void setId(String string) {

		id = string;

	}

	

	public String getId() {

		return id;

	}

	

	public void setName(String name)

	{

		this.name=name;

	}

	public String getName()

	{

		return this.name;

	}

	public void setStudents(Set stud)

	{

		this.students=stud;

	}

	public Set getStudents()

	{

		return this.students;

	}

}


可以看出,在Course類中也包含了兩個屬性,id和name,它的屬性和表Courses的字段是一一對應的,并且類型一致。
書寫好了持久對象,接下來的任務就是書寫對象、關系映射描述。在hibernate\WEB-INF\classes目錄下新建一個Course.hbm.xml描述文件,內容如例程4所示。
例程4 Course.hbm.xml





<?xml version="1.0"?>

<!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.hellking.study.hibernate.Course"

        table="Courses"

        dynamic-update="false"

    >



        <id

            name="id"

            column="CourseId"

            type="string"

            unsaved-value="any"

        >

            <generator class="assigned"/>

        </id>



        <property

            name="name"

            type="string"

            update="true"

            insert="true"

            column="Name"

        />      

    </class>

</hibernate-mapping>


在Course.hbm.xml映射文件中,指定了要映射的類和映射的表,并且指定了表的各個字段和Java對象中各個字段的映射關系,比如Course對象中的id屬性對應了Courses表的courseId字段。

接下來的任務就是在hibernate.cfg.xml中指定這個映射關系。如下所示:





<session-factory>


<!-- Mapping files -->  

 <mapping resource="Course.hbm.xml"/>

</session-factory>


編寫業務邏輯


到此,我們已經封裝了一個名為Courses的表,并且配置完成。接下來的任務就是在Web應用開發中使用它們,為了演示在Hibernate中對數據庫的不同類型的操作,我們開發的Web應用有以下的功能:


* 增加一個Course;


* 刪除一個Course;


* 按照Course的名字進行模糊搜索;


* 查看系統中所有的Course。



雖然我們可以直接在JSP中使用hibernate,但是往往我們不這樣,而是把這些業務邏輯封裝在JavaBean中,然后在JSP中通過調用JavaBean以訪問Hibernate封裝的對象。

由于訪問通過使用hibernate有一些共性的操作,在這里我們把這些共性的操作封裝在一個專門的類中,這樣其它的類可以繼承它,如例程5所示。

例程5 HibernateBase.java





package com.hellking.study.hibernate;



import net.sf.hibernate.*;

import net.sf.hibernate.cfg.*;

import java.util.*;

import java.io.IOException;

import java.io.PrintWriter;



public abstract class HibernateBase 

{

	protected SessionFactory sessionFactory;//會話工廠,用于創建會話

    protected Session session;//hibernate會話

    protected Transaction transaction; //hiberante事務

    

    public HibernateBase()throws HibernateException

    {

    	this.initHibernate();

    }

    // 幫助方法

    protected void initHibernate()

        throws HibernateException {



        // 裝載配置,構造SessionFactory對象

        sessionFactory = new Configuration().configure().buildSessionFactory();

    }

    

    /**

     *開始一個hibernate事務

     */

    protected void beginTransaction()

        throws HibernateException {



        session = sessionFactory.openSession();

        transaction = session.beginTransaction();

    }

    

    /**

     *結束一個hibernate事務。

     */

    protected void endTransaction(boolean commit)

        throws HibernateException {



        if (commit) {

            transaction.commit();

        } else {

           //如果是只讀的操作,不需要commit這個事務。

            transaction.rollback();

        }

         session.close();

    }

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区综合| 色婷婷精品久久二区二区蜜臂av| 激情深爱一区二区| 欧美日韩精品欧美日韩精品| 国产精品久久久久婷婷| 国产九色sp调教91| 欧美白人最猛性xxxxx69交| 午夜日韩在线观看| 欧美性猛交xxxxxxxx| 亚洲欧洲另类国产综合| 国产剧情一区在线| 成人免费视频视频| 欧美一区二区网站| 欧美美女bb生活片| 欧美草草影院在线视频| 日韩国产精品久久久| 亚洲欧美偷拍卡通变态| 欧美日韩国产一级二级| 欧美在线不卡视频| 91精品国产高清一区二区三区| 成人av手机在线观看| 日本精品免费观看高清观看| 欧美三级电影一区| 日韩免费视频一区| 中文字幕日本乱码精品影院| 夜夜精品视频一区二区| 免费在线看一区| 国产成人免费视频网站| 99re热视频这里只精品| 欧美乱妇15p| 国产亚洲精品免费| 亚洲一区电影777| 久久99日本精品| 99久久久免费精品国产一区二区| 欧美理论在线播放| 国产欧美视频一区二区| 一区二区三区美女| 国产老妇另类xxxxx| 日本丰满少妇一区二区三区| 日韩欧美激情在线| 一区二区三区在线视频观看58| 麻豆精品国产91久久久久久| 97精品久久久午夜一区二区三区| 欧美一卡二卡三卡| 亚洲人吸女人奶水| 国产成人在线免费观看| 欧美日韩高清一区| 国产精品丝袜在线| 麻豆国产精品官网| 欧美日韩在线直播| 日韩一区有码在线| 国产毛片一区二区| 精品欧美久久久| 亚洲国产另类av| 成人三级在线视频| 久久久久国产一区二区三区四区| 亚洲成人动漫精品| 99综合电影在线视频| 久久在线免费观看| 免费观看91视频大全| 欧美午夜理伦三级在线观看| 国产精品久久精品日日| 国产精品一区二区三区乱码| 精品国产一区二区三区忘忧草| 亚洲图片欧美综合| 欧美视频自拍偷拍| 亚洲一级二级三级| 欧美亚一区二区| 亚洲黄色免费网站| 在线亚洲高清视频| 亚洲一区在线看| 欧美四级电影在线观看| 一区二区三区四区高清精品免费观看| 91在线观看视频| 亚洲免费在线电影| 欧美日韩国产影片| 久久国产免费看| 91麻豆精品国产91久久久久久| 亚洲超碰精品一区二区| 欧美日韩午夜在线视频| 天天av天天翘天天综合网色鬼国产 | 日本韩国欧美一区二区三区| 国产免费观看久久| www.欧美日韩| 亚洲裸体xxx| 色88888久久久久久影院野外 | 91麻豆视频网站| 亚洲欧美二区三区| 色久综合一二码| 亚洲精品国产精华液| 欧美精品日韩综合在线| 欧美96一区二区免费视频| 精品三级在线看| 成人小视频免费观看| 1区2区3区精品视频| 91久久国产综合久久| 日韩高清在线观看| 26uuu成人网一区二区三区| 国产一区二区看久久| 欧美激情一区三区| 欧美日韩专区在线| 老司机免费视频一区二区| 欧美国产日韩亚洲一区| 在线观看av不卡| 精品中文av资源站在线观看| 亚洲国产精品成人综合色在线婷婷| 99精品久久99久久久久| 视频一区欧美精品| 国产亚洲一本大道中文在线| 色哟哟亚洲精品| 麻豆一区二区三| 亚洲日本成人在线观看| 日韩欧美一区在线观看| 99re热视频这里只精品| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲乱码中文字幕| 精品少妇一区二区三区在线播放 | 成人午夜视频免费看| 五月天婷婷综合| 国产精品理伦片| 日韩欧美成人激情| 91美女在线看| 丁香亚洲综合激情啪啪综合| 视频一区二区中文字幕| 亚洲男人天堂av| 国产午夜亚洲精品理论片色戒| 欧美日韩一区在线| 99精品视频免费在线观看| 国产在线播精品第三| 午夜激情综合网| 一区二区三区四区中文字幕| 国产午夜精品在线观看| 欧美成人vr18sexvr| 91精品黄色片免费大全| 日韩高清在线一区| 亚洲欧美在线视频| 在线视频观看一区| 99久久er热在这里只有精品66| 久久成人久久爱| 免费高清成人在线| 午夜精品福利在线| 一区二区在线免费| 中文字幕五月欧美| 亚洲丝袜精品丝袜在线| 国产亚洲成aⅴ人片在线观看| 日韩精品资源二区在线| 日韩欧美一区二区视频| 日韩亚洲欧美成人一区| 欧美日韩大陆一区二区| 欧美视频一区二区三区四区 | 欧美日韩一区二区电影| 91美女精品福利| 色av一区二区| 欧美日韩综合在线| 91精品久久久久久久99蜜桃| 欧美一级在线免费| 欧美草草影院在线视频| 久久精品亚洲麻豆av一区二区 | 成人av动漫在线| 99久久精品免费看国产免费软件| 99riav一区二区三区| 欧美最新大片在线看| 欧美日韩三级在线| 日韩一本二本av| 国产亚洲精久久久久久| 国产精品色噜噜| 亚洲另类在线制服丝袜| 亚洲不卡在线观看| 九一九一国产精品| 成人av在线一区二区三区| 91在线视频网址| 欧美日产国产精品| 精品国产伦一区二区三区观看方式| 久久久久久久久久久黄色| 亚洲欧洲精品一区二区三区不卡| 一区二区三区在线视频观看| 偷拍亚洲欧洲综合| 国产精品一区二区男女羞羞无遮挡| 9久草视频在线视频精品| 欧美日韩国产一级片| 精品粉嫩aⅴ一区二区三区四区| 国产亚洲精品7777| 自拍偷拍国产精品| 秋霞午夜鲁丝一区二区老狼| 国产91对白在线观看九色| 99国产欧美另类久久久精品| 在线电影院国产精品| 久久久亚洲午夜电影| 一区二区日韩电影| 国产成人福利片| 欧美日韩国产123区| 国产精品九色蝌蚪自拍| 午夜影院久久久| 99久久精品免费精品国产| 日韩三级视频中文字幕| 亚洲欧美另类小说| 国产高清成人在线| 欧美一级国产精品| 亚洲激情中文1区| 成人成人成人在线视频|