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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 使用hibernate的一個(gè)完整例子.txt

?? 不要錯(cuò)過
?? TXT
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
配置
1、 下載安裝Tomcat,并且下載Hibernate的運(yùn)行環(huán)境(主要包含一些JAR包)。

2、 把要使用的數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng)程序拷貝到%TOMCAT_HOME%\common\lib目錄下。筆者使用的是MYSQL,對(duì)應(yīng)的驅(qū)動(dòng)程序的JAR包為mm.mysql-2.0.4-bin.jar。

3、 在Tomcat的Webapps目錄下新建一個(gè)Web應(yīng)用,名字為hibernate。

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

5、 在%TOMCAT_HOME%\conf\server.xml中Web應(yīng)用和數(shù)據(jù)源。在server.xml中加入以下的配置描述。
例程1 配置web應(yīng)用


<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>

在這里,配置了一個(gè)名為hibernate的Web應(yīng)用,并且配置了一個(gè)數(shù)據(jù)源,數(shù)據(jù)源的JNDI名稱為jdbc/hibernate。您需要根據(jù)情況修改數(shù)據(jù)源的鏈接屬性。

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



<!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中配置的數(shù)據(jù)源的屬性一樣。如果不是使用MYSQL,那么需要更改dialect屬性。

到現(xiàn)在,配置基本完成,下面我們來開發(fā)一個(gè)最簡(jiǎn)單的應(yīng)用。

開發(fā)持久對(duì)象、編寫映射描述
我們使用hibernate來封裝一個(gè)簡(jiǎn)單的數(shù)據(jù)表。這個(gè)表的名字為Courses,它有兩個(gè)字段,一個(gè)是ID,它是Courses表的主鍵;另一個(gè)是name,表示Courses的名字。在數(shù)據(jù)庫(kù)中使用以下的腳本來創(chuàng)建這個(gè)表:

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

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

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


package com.hellking.study.hibernate;

import java.util.Set;

/**
*在hibernate中代表了Course表的類。
*/
public class Course 
{
/**每個(gè)屬性和表的一個(gè)字段對(duì)應(yīng)**/
private String id;
private String name;

/**students表示course中的學(xué)生,在后面才會(huì)用到,暫時(shí)不管**/
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類中也包含了兩個(gè)屬性,id和name,它的屬性和表Courses的字段是一一對(duì)應(yīng)的,并且類型一致。
書寫好了持久對(duì)象,接下來的任務(wù)就是書寫對(duì)象、關(guān)系映射描述。在hibernate\WEB-INF\classes目錄下新建一個(gè)Course.hbm.xml描述文件,內(nèi)容如例程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映射文件中,指定了要映射的類和映射的表,并且指定了表的各個(gè)字段和Java對(duì)象中各個(gè)字段的映射關(guān)系,比如Course對(duì)象中的id屬性對(duì)應(yīng)了Courses表的courseId字段。

接下來的任務(wù)就是在hibernate.cfg.xml中指定這個(gè)映射關(guān)系。如下所示:



<session-factory>
<!-- Mapping files --> 
<mapping resource="Course.hbm.xml"/>
</session-factory>

編寫業(yè)務(wù)邏輯
到此,我們已經(jīng)封裝了一個(gè)名為Courses的表,并且配置完成。接下來的任務(wù)就是在Web應(yīng)用開發(fā)中使用它們,為了演示在Hibernate中對(duì)數(shù)據(jù)庫(kù)的不同類型的操作,我們開發(fā)的Web應(yīng)用有以下的功能:


增加一個(gè)Course;

刪除一個(gè)Course;

按照Course的名字進(jìn)行模糊搜索;

查看系統(tǒng)中所有的Course。


雖然我們可以直接在JSP中使用hibernate,但是往往我們不這樣,而是把這些業(yè)務(wù)邏輯封裝在JavaBean中,然后在JSP中通過調(diào)用JavaBean以訪問Hibernate封裝的對(duì)象。

由于訪問通過使用hibernate有一些共性的操作,在這里我們把這些共性的操作封裝在一個(gè)專門的類中,這樣其它的類可以繼承它,如例程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;//會(huì)話工廠,用于創(chuàng)建會(huì)話
protected Session session;//hibernate會(huì)話
protected Transaction transaction; //hiberante事務(wù)

public HibernateBase()throws HibernateException
{
this.initHibernate();
}
// 幫助方法
protected void initHibernate()
throws HibernateException {

// 裝載配置,構(gòu)造SessionFactory對(duì)象
sessionFactory = new Configuration().configure().buildSessionFactory();
}

/**
*開始一個(gè)hibernate事務(wù)
*/
protected void beginTransaction()
throws HibernateException {

session = sessionFactory.openSession();
transaction = session.beginTransaction();
}

/**
*結(jié)束一個(gè)hibernate事務(wù)。
*/
protected void endTransaction(boolean commit)
throws HibernateException {

if (commit) {
transaction.commit();
} else {
//如果是只讀的操作,不需要commit這個(gè)事務(wù)。
transaction.rollback();
}
session.close();
}
}

下面編寫業(yè)務(wù)邏輯類,新建一個(gè)名為CourseBean的JavaBean,并且CourseBean繼承HibernateBase類,代碼如例程6所示。

例程6 CourseBean.java


package com.hellking.study.hibernate;

import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
import java.util.*;

/**
*和course相關(guān)的業(yè)務(wù)邏輯
*/
public class CourseBean extends HibernateBase
{
public CourseBean()throws HibernateException
{
super();
}
/**
*增加一個(gè)Course

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲禁片免费| 另类中文字幕网| 久久蜜臀中文字幕| 欧美另类z0zxhd电影| 色欲综合视频天天天| 色综合天天在线| 色妹子一区二区| 91在线观看成人| 欧美午夜精品久久久久久超碰| 国产成人精品综合在线观看| 男女男精品视频网| 美国欧美日韩国产在线播放| 国产一区激情在线| 东方aⅴ免费观看久久av| 风间由美一区二区av101| 精品一区二区三区日韩| 国产一区二区电影| 99国内精品久久| 色老综合老女人久久久| 欧美日韩国产小视频| 日韩一区二区三区av| 久久丝袜美腿综合| 亚洲精品中文在线| 日韩av高清在线观看| 国产精品911| 色综合欧美在线| 欧美成人vr18sexvr| 国产精品系列在线| 亚洲激情自拍偷拍| 视频一区欧美日韩| 蜜桃视频一区二区三区| 成人免费视频播放| 欧美三电影在线| 中文无字幕一区二区三区 | 黄一区二区三区| 亚洲欧洲成人av每日更新| 亚洲一区二区高清| 国产一区二区三区黄视频| 色妞www精品视频| 26uuu国产一区二区三区| 亚洲在线中文字幕| 麻豆传媒一区二区三区| 99精品欧美一区二区三区综合在线| 欧美系列一区二区| 欧美日韩国产大片| 国产精品美女久久久久高潮| 久久天天做天天爱综合色| 中文字幕在线不卡| 七七婷婷婷婷精品国产| 97久久人人超碰| 91美女在线观看| 精品国产乱码久久久久久久| 26uuu亚洲综合色欧美| 国产精品青草久久| 久久一区二区三区四区| 亚洲成人tv网| 亚洲免费资源在线播放| 在线综合视频播放| 91视视频在线观看入口直接观看www | 欧美日韩国产另类一区| 中文字幕视频一区二区三区久| 美国av一区二区| 欧美久久久久中文字幕| 亚洲综合偷拍欧美一区色| 成人免费看视频| 欧美精品一区二区三区蜜桃 | 五月婷婷激情综合网| 成人国产精品免费观看动漫| 国产午夜精品美女毛片视频| 久久精品国内一区二区三区| 欧美日韩免费在线视频| **网站欧美大片在线观看| 豆国产96在线|亚洲| 欧美高清在线一区二区| 成人免费视频免费观看| 国产精品乱子久久久久| 成人爱爱电影网址| 中文乱码免费一区二区| 99国产一区二区三精品乱码| 中文字幕一区二区视频| 99国产欧美另类久久久精品| 亚洲欧美日韩国产成人精品影院| 国产a级毛片一区| 国产精品美女久久久久久| 99国内精品久久| 亚洲第一搞黄网站| 欧美一区二区三区日韩| 玖玖九九国产精品| 久久久国产精品午夜一区ai换脸| 精品一区二区三区视频| 国产精品福利一区二区| 色天天综合色天天久久| 日韩高清一区在线| 欧美变态tickle挠乳网站| 国产乱妇无码大片在线观看| 中文久久乱码一区二区| 欧美在线色视频| 免费一级片91| 国产精品成人免费在线| 欧美在线综合视频| 久久电影国产免费久久电影| 自拍偷在线精品自拍偷无码专区| 欧美视频在线一区| 国产iv一区二区三区| 亚洲五码中文字幕| 久久久久久**毛片大全| 91国偷自产一区二区三区成为亚洲经典 | 在线观看日韩国产| 蜜乳av一区二区三区| 中文字幕亚洲区| 日韩欧美在线观看一区二区三区| 国产91在线观看| 日本中文字幕不卡| 欧美国产精品久久| 日韩欧美自拍偷拍| 欧美中文字幕不卡| jlzzjlzz亚洲女人18| 美女在线视频一区| 亚洲国产日韩av| 国产精品嫩草影院av蜜臀| 欧美夫妻性生活| 一本色道a无线码一区v| 国产精品综合av一区二区国产馆| 亚洲午夜久久久| 亚洲日穴在线视频| 中文字幕第一页久久| 欧美一级xxx| 欧美日韩一二三| 91免费版pro下载短视频| 国产乱色国产精品免费视频| 日日摸夜夜添夜夜添亚洲女人| 亚洲欧洲一区二区三区| 国产午夜精品在线观看| 91精品国产欧美一区二区| 在线看不卡av| 色综合久久中文综合久久97| 成人av资源站| 成人在线一区二区三区| 国产一区二区三区在线观看精品| 日韩中文字幕不卡| 日韩主播视频在线| 午夜影视日本亚洲欧洲精品| 亚洲乱码国产乱码精品精小说 | 亚洲综合视频网| 亚洲欧美日韩一区二区| 综合色天天鬼久久鬼色| 久久精品欧美一区二区三区麻豆| 日韩欧美综合在线| 91精品国产手机| 日韩一区二区免费视频| 日韩欧美视频一区| 精品电影一区二区| 欧美不卡123| 欧美日韩在线三区| 91精品国产色综合久久不卡电影| 欧美伦理视频网站| 6080国产精品一区二区| 337p亚洲精品色噜噜噜| 日韩精品一区二| 国产欧美日韩在线视频| 中文字幕一区二区三区四区不卡| 亚洲女人的天堂| 亚洲va天堂va国产va久| 日韩不卡在线观看日韩不卡视频| 麻豆免费看一区二区三区| 国产不卡在线播放| 91免费视频观看| 欧美一区在线视频| 欧美大胆人体bbbb| 国产精品久久99| 天天色 色综合| 国产精品99久久不卡二区| 成人黄色777网| 91精彩视频在线观看| 日韩一区二区三区视频在线| 国产情人综合久久777777| 一区在线中文字幕| 日韩不卡一二三区| 国产成人午夜99999| 日本电影亚洲天堂一区| 日韩视频在线观看一区二区| 精品精品国产高清一毛片一天堂| 中文字幕一区二区三中文字幕| 香蕉久久夜色精品国产使用方法 | 亚洲丝袜美腿综合| 男女男精品视频| 92精品国产成人观看免费| 欧美裸体bbwbbwbbw| 亚洲国产精品ⅴa在线观看| 亚洲va韩国va欧美va| 国产不卡免费视频| 欧美视频第二页| 国产精品人妖ts系列视频| 日韩在线卡一卡二| 91日韩在线专区| 久久久久高清精品| 天堂午夜影视日韩欧美一区二区| 成人精品国产福利| 欧美一级片免费看| 亚洲免费观看高清完整|