亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人综合在线观看| 欧美日韩国产一级片| 欧美三级中文字幕在线观看| 日韩一区二区视频| 亚洲精品日韩综合观看成人91| 免费欧美在线视频| 欧美三级三级三级爽爽爽| 亚洲国产经典视频| 久久99热这里只有精品| 欧美人成免费网站| 伊人婷婷欧美激情| 成人免费黄色大片| 久久这里只有精品视频网| 日本欧美一区二区三区乱码| 欧美亚洲动漫另类| 国产精品免费视频观看| 国产精品99久久久久久久女警 | 美女脱光内衣内裤视频久久网站| 成人aaaa免费全部观看| 精品久久久久99| 日本欧美一区二区三区乱码| 精品视频一区三区九区| 亚洲女同一区二区| 成人精品高清在线| 久久久亚洲午夜电影| 久久99热99| 日韩免费看的电影| 日本欧美久久久久免费播放网| 欧美日韩国产综合草草| 亚洲精品成人少妇| 欧美在线三级电影| 亚洲国产日韩在线一区模特| 欧美视频日韩视频在线观看| 亚洲自拍欧美精品| 欧美性生活大片视频| 亚洲午夜三级在线| 欧美日韩国产片| 日本不卡中文字幕| 精品国产免费一区二区三区香蕉| 奇米888四色在线精品| 精品国产髙清在线看国产毛片 | 福利一区在线观看| 国产精品视频麻豆| 色综合天天做天天爱| 亚洲激情欧美激情| 欧美三级日韩在线| 国产最新精品精品你懂的| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产馆精品极品| 中文字幕一区二区三| 色婷婷国产精品| 青青草成人在线观看| 国产日韩欧美激情| 91成人免费网站| 激情综合五月婷婷| 欧美激情在线观看视频免费| 成人av影视在线观看| 亚洲一区在线播放| 91精品国产手机| 成人做爰69片免费看网站| 一区二区三区四区乱视频| 欧美嫩在线观看| 成人免费高清在线观看| 亚洲国产成人av网| 久久久综合网站| 欧美体内she精视频| 韩国中文字幕2020精品| 亚洲精品福利视频网站| 精品欧美一区二区久久 | 国产精品美女久久久久久| 色八戒一区二区三区| 日本美女一区二区三区视频| 欧美激情自拍偷拍| 欧美日韩精品三区| 国产白丝精品91爽爽久久| 一区二区在线看| 精品国产欧美一区二区| 欧美视频完全免费看| 国产白丝精品91爽爽久久| 日精品一区二区| 成人免费一区二区三区在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 中文字幕日韩精品一区| 欧美一区二区三区免费视频| 成人黄色综合网站| 六月婷婷色综合| 亚洲一区在线看| 中文字幕在线观看不卡| 久久一夜天堂av一区二区三区| 色av成人天堂桃色av| 国产一区二区导航在线播放| 肉色丝袜一区二区| 亚洲一区二区三区四区在线观看| 国产精品久久久久久久久免费樱桃| 欧美一级二级三级蜜桃| 色婷婷av久久久久久久| 99久久综合狠狠综合久久| 精品一区二区三区免费| 日本aⅴ精品一区二区三区| 午夜精品一区在线观看| 亚洲三级视频在线观看| 中文在线资源观看网站视频免费不卡| 欧美一区二区三区四区久久 | 一区二区三区在线播放| 国产欧美日韩综合| 久久麻豆一区二区| 精品成人在线观看| 精品乱人伦一区二区三区| 91精品麻豆日日躁夜夜躁| 欧美人xxxx| 欧美精品一二三| 4438x亚洲最大成人网| 欧美日韩中文字幕一区| 91黄色激情网站| 欧美综合在线视频| 欧美日韩夫妻久久| 在线成人av网站| 欧美精品黑人性xxxx| 91精品国产综合久久精品性色| 91麻豆精品国产91久久久资源速度 | 久久99久久精品| 奇米影视一区二区三区小说| 久久精品国产免费| 看电视剧不卡顿的网站| 韩日av一区二区| 成人国产精品免费观看视频| 风间由美一区二区三区在线观看| 国产精品1区2区3区| 国产91高潮流白浆在线麻豆| av亚洲精华国产精华精| 欧美在线一二三| 日韩欧美一二三四区| 久久久99久久精品欧美| 国产精品久久久久久久第一福利| 中文字幕在线观看不卡| 亚洲一区二区偷拍精品| 蜜臀va亚洲va欧美va天堂| 国产成人精品免费在线| 在线观看不卡一区| 日韩亚洲欧美在线| 国产精品免费观看视频| 亚洲第一福利一区| 国产一区久久久| 91久久精品国产91性色tv| 在线播放91灌醉迷j高跟美女 | 欧美猛男男办公室激情| 26uuu欧美| 一卡二卡三卡日韩欧美| 免费看欧美美女黄的网站| 成人免费观看av| 91精品国产麻豆国产自产在线| 久久久久久久免费视频了| 亚洲色图欧美偷拍| 毛片av一区二区| 99精品欧美一区二区三区小说 | 色偷偷久久人人79超碰人人澡 | 色综合久久综合网| 精品福利一区二区三区免费视频| 国产精品素人视频| 日产精品久久久久久久性色| 成人动漫在线一区| 日韩一区二区免费在线观看| 国产精品美女www爽爽爽| 麻豆一区二区三| 欧美性生活久久| 国产精品福利影院| 国内精品自线一区二区三区视频| 欧美亚洲图片小说| 国产精品久久久久天堂| 蜜臀av一级做a爰片久久| 色综合久久99| 国产午夜久久久久| 美女免费视频一区二区| 欧美亚洲国产一区二区三区va | 91视频你懂的| 2017欧美狠狠色| 丝袜国产日韩另类美女| 91国产免费观看| 日本一区二区免费在线| 久久国产精品免费| 在线91免费看| 五月天久久比比资源色| 欧美亚洲综合在线| 一区二区三区在线观看网站| 成人免费看的视频| 久久久久九九视频| 久久丁香综合五月国产三级网站| 欧美日韩mp4| 石原莉奈一区二区三区在线观看| 色欧美88888久久久久久影院| 欧美国产1区2区| 国产精品系列在线观看| 久久这里只精品最新地址| 极品销魂美女一区二区三区| 欧美一级精品在线| 免费欧美高清视频| 欧美一二三在线| 久久99精品视频| 久久久精品免费免费| 国产美女久久久久|