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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? hibernate.doc

?? hibernate配置的心得體會(huì) 希望對(duì)大家有些幫組
?? DOC
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
下面編寫(xiě)業(yè)務(wù)邏輯類(lèi),新建一個(gè)名為CourseBean的JavaBean,并且CourseBean繼承HibernateBase類(lèi),代碼如例程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

	 */

	public void addCourse(Course st)throws HibernateException

	{

		beginTransaction();

         session.save(st);         

         endTransaction(true);

    }

    

    /**

     *查詢(xún)系統(tǒng)中所有的Course,返回的是包含有Course持久對(duì)象的Iterator。

     */

    public Iterator getAllCourses()throws HibernateException

    {

     	String queryString = "select courses from Course as courses";

        beginTransaction();

        Query query = session.createQuery(queryString);

        Iterator it= query.iterate();

        return it;

    }

    

    /**

     *刪除給定ID的course

     */

    public void deleteCourse(String id)throws HibernateException

    {

     	beginTransaction();    	

     	Course course=(Course)session.load(Course.class,id);    	

     	session.delete(course);

     	endTransaction(true);

     }

    

    /**

     *按course的名字進(jìn)行模糊查找,返回的是包含有Course持久對(duì)象的Iterator。

     */

    public Iterator getSomeCourse(String name)throws HibernateException

    {

      	String queryString = "select c from Course as c where c.name like :name" ;

         beginTransaction();

         Query query = session.createQuery(queryString);

         query.setString("name", "%"+name+"%");

        Iterator it= query.iterate();

        return it;

    }    	

}


在CourseBean封裝了4個(gè)業(yè)務(wù)方法,你可以根據(jù)情況增加其它的業(yè)務(wù)方法。在CourseBean中,通過(guò)Hibernate來(lái)操作潛在的數(shù)據(jù)庫(kù)資源。

要保存Course數(shù)據(jù)到數(shù)據(jù)庫(kù),可以通過(guò):





session.save(Course);


方法來(lái)保存,它相當(dāng)于使用在JDBC中執(zhí)行以下語(yǔ)句:





Connection con=…

Statement stmt=con.createStatement();

stmt.executeUpdate("insert into courses values(''"+course.getId(),+"'',''"+course.getName()+"'')");

con.close();


可以看出,通過(guò)使用Hibernate,可以大大減少數(shù)據(jù)訪問(wèn)的復(fù)雜度。

在JSP中調(diào)用業(yè)務(wù)邏輯

添加數(shù)據(jù)

CourseBean這個(gè)業(yè)務(wù)對(duì)象封裝了和Hibernate的交互關(guān)系,從而使JSP和Hibernate關(guān)系的解藕。我們來(lái)看測(cè)試主頁(yè)面的部分代碼,如例程7所示。

例程7 測(cè)試Hibernate開(kāi)發(fā)的應(yīng)用(course.jsp)





<%@ page import="java.sql.*,java.util.*" errorPage="error.jsp"%> 

<jsp:useBean id="course" class="com.hellking.study.hibernate.Course" scope="page">

<jsp:setProperty name="course" property="*"/>

</jsp:useBean>

<jsp:useBean id="courseBusiness" class="com.hellking.study.hibernate.CourseBean" scope="page"/>

<html><body><center>

<%  

  try

  {

  if(course.getId().equals(null)||course.getId().equals(""));

  else courseBusiness.addCourse(course);

  

  %>

成功添加了Course:<br>

name:<%=course.getName()%>

Id:<%=course.getId()%>

<%

}

  catch(Exception e)

  {

  }  

%> 



<hr>

<br>::增加一個(gè)course::<br>

<form action="course.jsp" method="get" name="add">

id:<input type=text name="id"><br>

name:<input type=text name="name"><br>

<input type=submit value="submit"><br>

</form>

<hr>

::按名字模糊查找::<br>

<form action="queryCourse.jsp" method="get" name="queryByName">

name:<input type=text name="name"><br>

<input type=submit value="query"><br>

</form>

<hr>

::刪除一個(gè)Course::<br>

<form action="deleteCourse.jsp" method="get" name="queryByName">

id:<input type=text name="id"><br>

<input type=submit value="delete"><br>

</form>

<hr>

<a href=viewAll.jsp>::查看所有Course::<a>

</body>

</html>


首先通過(guò)一個(gè)值對(duì)象Course(這個(gè)類(lèi)正好是Hibernate使用的持久對(duì)象,這里作為值對(duì)象來(lái)傳遞數(shù)據(jù))接收獲得的參數(shù),然后CourseBean的addCourse(Course)方法把數(shù)據(jù)保存到數(shù)據(jù)庫(kù)。可以看出,通過(guò)使用Hibernate,把數(shù)據(jù)從表單中添加到數(shù)據(jù)庫(kù)非常簡(jiǎn)單。

查詢(xún)


下面來(lái)看模糊查找的JSP代碼,如例程8所示。

例程8 按名字模糊查找Course





<%@ page import="java.sql.*,java.util.*,com.hellking.study.hibernate.Course" errorPage="error.jsp"%> 

<jsp:useBean id="courseBusiness" class="com.hellking.study.hibernate.CourseBean" scope="page"/>


<% try

{

   Iterator it=courseBusiness.getSomeCourse((String)request.getParameter("name"));

   while(it.hasNext())

   {

     Course temp=(Course)it.next();

     out.println("<tr><td>"+temp.getId()+"</td>");

     out.println("<td>"+temp.getName()+"</td></tr>");

   }

  }

  catch(Exception e)

  {

    out.println(e.getMessage());

   }

%>

….


它實(shí)際上調(diào)用的是CourseBean的Iterator getSomeCourse(String name)方法。我們來(lái)回顧一下這個(gè)方法中的代碼:





/**

     *按course的名字進(jìn)行模糊查找

     */

    public Iterator getSomeCourse(String name)throws HibernateException

    {

      	String queryString = "select c from Course as c where c.name like :name" ;

        beginTransaction();

        Query query = session.createQuery(queryString);

         query.setString("name", "%"+name+"%");

        Iterator it= query.iterate();

        return it;

    }


在查詢(xún)前,首先調(diào)用beginTransaction方法啟動(dòng)新的Hibernate事務(wù),然后創(chuàng)建一個(gè)Query對(duì)象,在創(chuàng)建這個(gè)對(duì)象時(shí),同時(shí)指定查詢(xún)的語(yǔ)句。

注意,在查詢(xún)語(yǔ)句:





select c from Course as c where c.name like :name"


中,它雖然和普通的SQL語(yǔ)句相似,但是不同,在數(shù)據(jù)庫(kù)中,使用的表的名字是Courses,而在這個(gè)查詢(xún)語(yǔ)句中使用的是Course,它和持久對(duì)象的名字一致,也就是說(shuō),這個(gè)查詢(xún)的概念是查詢(xún)持久對(duì)象,而不是數(shù)據(jù)庫(kù)的記錄。

創(chuàng)建了查詢(xún)對(duì)象Query后,需要設(shè)置查詢(xún)的參數(shù),它和在JDBC中PreparedStatement對(duì)象中設(shè)置參數(shù)的方法相似。通過(guò)"Iterator it= query.iterate()"語(yǔ)句來(lái)執(zhí)行查詢(xún),并且返回一個(gè)Iterator對(duì)象。在這里使用了Hibernate提供的查詢(xún)機(jī)制,一般的JDBC查詢(xún)返回的是ResultSet對(duì)象,而這里返回的是包含了CourseBean對(duì)象的Iterator。

要查詢(xún)系統(tǒng)中所有的Course,也同樣非常簡(jiǎn)單,可以通過(guò)例程9所示的代碼實(shí)現(xiàn)。

例程9 查詢(xún)數(shù)據(jù)庫(kù)中所有的Course






<jsp:useBean id="courseBusiness" class="com.hellking.study.hibernate.CourseBean" scope="page"/>


<% try

{

   Iterator it=courseBusiness.getAllCourses();

   while(it.hasNext())

   {

     Course temp=(Course)it.next();

     out.println("<tr><td>"+temp.getId()+"</td>");

     out.println("<td>"+temp.getName()+"</td></tr>");

   }

  }

  catch(Exception e)

  {

    out.println(e.getMessage());

   }

%>



實(shí)際上調(diào)用的是CourseBean的getAllCourses方法,它和getSomeCourse方法機(jī)制一樣,就不再介紹了。

刪除數(shù)據(jù)

在JSP中,使用以下的代碼來(lái)執(zhí)行刪除操作。

例程10 刪除數(shù)據(jù)庫(kù)中Courses表的記錄





<jsp:useBean id="courseBusiness" class="com.hellking.study.hibernate.CourseBean" scope="page"/>


刪除id為:<%=request.getParameter("id")%>的course::::<br>



<% try

{

	courseBusiness.deleteCourse(request.getParameter("id"));

	out.println("刪除成功");

} 

  catch(Exception e)

  {

    out.println("不存在這個(gè)記錄");

   }

%>


我們來(lái)看CourseBean中執(zhí)行刪除操作的具體代碼:





/**

     *刪除給定ID的course

     */

    public void deleteCourse(String id)throws HibernateException

    {

    	beginTransaction();    	

    	Course course=(Course)session.load(Course.class,id);    	

    	session.delete(course);

    	endTransaction(true);

     }

? 
在這個(gè)方法中,首先開(kāi)始一個(gè)事務(wù),然后通過(guò)session.load(Course.class,id)方法來(lái)裝載指定ID的持久對(duì)象,接下來(lái)通過(guò)"session.delete(course)"來(lái)刪除已經(jīng)裝載的course,并且結(jié)束Hibernate事務(wù)。

總結(jié)


下面總結(jié)一下使用Hibernate的開(kāi)發(fā)過(guò)程:

1、 配置Hibernate(一次即可);

2、 確定數(shù)據(jù)表;

3、 創(chuàng)建持久對(duì)象;

4、 編寫(xiě)對(duì)象和數(shù)據(jù)表的映射描述;

5、 編寫(xiě)和業(yè)務(wù)邏輯。

實(shí)際上,上面的過(guò)程和使用EJB沒(méi)有什么區(qū)別:在使用EJB時(shí),首先當(dāng)然也是配置環(huán)境,初始化數(shù)據(jù)表;然后創(chuàng)建實(shí)體Bean(對(duì)象于Hibernate的持久對(duì)象);接下來(lái)編寫(xiě)部署描述符(ejb-jar.xml,廠商專(zhuān)有的部署描述),在這些部署描述符里,指定了EJB和數(shù)據(jù)表的映射關(guān)系,如果多個(gè)實(shí)體Bean存在關(guān)聯(lián)關(guān)系,需要描述它們之間的關(guān)系,這些描述對(duì)應(yīng)于Hibernate中持久對(duì)象的描述,如Course.hbm.xml;往往我們并不在應(yīng)用程序中直接操作實(shí)體Bean,而是通過(guò)業(yè)務(wù)對(duì)象(如會(huì)話(huà)Bean)來(lái)操作,這里的會(huì)話(huà)Bean可以簡(jiǎn)單的和Hibernate中執(zhí)行業(yè)務(wù)邏輯的JavaBean對(duì)應(yīng)。這里只是簡(jiǎn)單的類(lèi)比,不是絕對(duì)的,比如我們同樣可以在會(huì)話(huà)Bean中訪問(wèn)Hibernate持久對(duì)象,也就是說(shuō)使用Hibernate,同樣可以把業(yè)務(wù)邏輯放在會(huì)話(huà)Bean中。

通過(guò)本文的學(xué)習(xí),相信讀者對(duì)Hibernate已經(jīng)有了初步的認(rèn)識(shí),并且能夠使用Hibernate開(kāi)發(fā)簡(jiǎn)單的應(yīng)用。在下一篇中,我們將學(xué)習(xí)怎么使用Hibernate來(lái)為復(fù)雜的數(shù)據(jù)表進(jìn)行映射,并且維護(hù)它們之間的關(guān)系。

本新聞發(fā)表于:2004-5-26 8:12:25



?2004-2005 mouse. 版權(quán)所有.?技術(shù)支持 浩子

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线高清视频| 国产精品亲子伦对白| 一区二区高清在线| 从欧美一区二区三区| 国产精品久久久久久久岛一牛影视| 国产精品一线二线三线| 国产精品色婷婷| 日韩欧美一区二区三区在线| 麻豆91精品视频| 精品处破学生在线二十三| 92国产精品观看| 奇米影视在线99精品| 中文字幕精品综合| 色婷婷综合视频在线观看| 日本va欧美va精品| 日韩一区日韩二区| 在线不卡中文字幕| 精品无人区卡一卡二卡三乱码免费卡| 中文字幕第一区综合| 7777女厕盗摄久久久| 成人午夜av影视| 亚洲人成人一区二区在线观看| 色狠狠一区二区三区香蕉| 黑人巨大精品欧美一区| 亚洲色图丝袜美腿| 精品国产乱码久久久久久1区2区| 国产黑丝在线一区二区三区| 亚洲成人动漫在线免费观看| 国产精品福利影院| 日韩欧美国产电影| 日韩欧美你懂的| av亚洲精华国产精华| 久久成人羞羞网站| 偷窥国产亚洲免费视频| 久久综合一区二区| 精品国产成人系列| 国产亚洲精品aa午夜观看| 欧美视频三区在线播放| 色婷婷综合久久久中文字幕| 不卡的电视剧免费网站有什么| 日韩电影免费在线| 日本欧美一区二区在线观看| 亚洲三级在线观看| 亚洲午夜av在线| 亚洲一区二区三区三| 热久久国产精品| 久久99久久久久| 国产一区二区调教| 久久av资源网| av不卡在线播放| 国产三级久久久| 亚洲激情自拍视频| 亚洲超丰满肉感bbw| 极品尤物av久久免费看| 国产精品一级在线| 成人av午夜电影| 欧美日韩国产一二三| 久久精品夜色噜噜亚洲a∨| 国产精品乱码一区二三区小蝌蚪| 91精品国产综合久久小美女| 日韩一区二区中文字幕| 久久久亚洲精品石原莉奈 | 成人毛片老司机大片| 欧美亚洲禁片免费| 欧美精品一区二区三区四区 | 日韩av中文字幕一区二区三区 | 日韩国产在线观看| 成人va在线观看| 337p粉嫩大胆噜噜噜噜噜91av | 欧美国产成人精品| 麻豆91小视频| 国产精品丝袜一区| 91精品久久久久久久99蜜桃 | 在线成人免费观看| 一区二区三区不卡视频在线观看| 激情国产一区二区 | 91国产免费看| 欧美国产日韩一二三区| 国产主播一区二区三区| 欧美日韩免费不卡视频一区二区三区| 日韩一级黄色大片| 三级在线观看一区二区 | 精品欧美一区二区久久| 亚洲精品视频一区二区| 成人精品鲁一区一区二区| 欧美日韩高清一区二区不卡| 国产欧美日韩不卡免费| 国产精品资源在线| 久久午夜免费电影| 韩日精品视频一区| 日韩欧美视频在线| 紧缚奴在线一区二区三区| 日韩一区二区在线观看视频| 日本不卡高清视频| 久久综合国产精品| 成人精品免费网站| 亚洲激情男女视频| 成人av在线资源网| 中文字幕一区二区三区四区不卡| 国产成人在线观看免费网站| 26uuu国产一区二区三区| 精品无人码麻豆乱码1区2区 | 欧美三级资源在线| 日韩国产欧美一区二区三区| 91.com在线观看| 国产原创一区二区三区| 国产三级久久久| 在线欧美日韩国产| 日韩成人午夜精品| 亚洲国产成人在线| 在线观看精品一区| 久久国产人妖系列| 中文字幕一区av| 91精品国产一区二区三区| 久久99精品久久久久久国产越南| 久久久久久久精| 色综合天天综合网国产成人综合天 | 国产一区不卡视频| 亚洲女同女同女同女同女同69| 欧美亚洲国产bt| 国产一区二区三区av电影| 一区二区三区日韩精品视频| 日韩欧美高清一区| 久久亚洲精品国产精品紫薇| 91年精品国产| 国产精品一二三四区| 亚洲综合在线电影| 国产视频视频一区| 制服丝袜国产精品| 色综合天天综合网国产成人综合天| 另类中文字幕网| 亚洲妇女屁股眼交7| √…a在线天堂一区| 26uuu精品一区二区三区四区在线| 欧美在线视频全部完| 成人午夜看片网址| 激情六月婷婷久久| 久久99精品久久久久久国产越南| 亚洲一区二区三区国产| 亚洲男女一区二区三区| 国产午夜精品理论片a级大结局| 67194成人在线观看| 欧美日韩一区二区三区不卡| 欧美综合视频在线观看| 色欧美88888久久久久久影院| 成人18视频日本| 99国产精品一区| 91在线小视频| 色妞www精品视频| 在线观看91视频| 7799精品视频| 精品卡一卡二卡三卡四在线| 久久亚洲捆绑美女| 国产精品福利一区二区三区| 成人免费在线视频观看| 亚洲午夜久久久久久久久电影网 | 国产精品水嫩水嫩| 亚洲精品va在线观看| 日本网站在线观看一区二区三区| 日产国产高清一区二区三区| 精品一区二区三区视频| www.色精品| 亚洲欧洲日韩综合一区二区| 亚洲一区欧美一区| 国产激情一区二区三区桃花岛亚洲| 99久久久免费精品国产一区二区| 日本国产一区二区| 日韩免费高清av| 国产精品久久久久精k8| 午夜精品爽啪视频| 成人性生交大合| 精品久久国产老人久久综合| 18欧美亚洲精品| 国产在线乱码一区二区三区| 在线观看视频一区二区| www亚洲一区| 日精品一区二区| 欧美中文字幕一区二区三区| 2020国产精品| 天天操天天干天天综合网| 91老师国产黑色丝袜在线| 久久久不卡网国产精品二区| 午夜视频在线观看一区| 99久久99久久免费精品蜜臀| 久久青草国产手机看片福利盒子 | 51精品国自产在线| 亚洲香蕉伊在人在线观| 99久久婷婷国产| 亚洲欧洲日韩一区二区三区| 韩国视频一区二区| 欧美成人女星排名| 日日摸夜夜添夜夜添亚洲女人| 欧美亚洲国产一区二区三区| 亚洲人成在线播放网站岛国| 99热在这里有精品免费| 国产精品久久久一本精品| 国产91精品在线观看| 久久精品亚洲国产奇米99| 成人黄色国产精品网站大全在线免费观看 | 日本特黄久久久高潮|