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

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

?? 使用hibernate的一個完整例子.txt

?? 不要錯過
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
*/
public void addCourse(Course st)throws HibernateException
{
beginTransaction();
session.save(st); 
endTransaction(true);
}

/**
*查詢系統中所有的Course,返回的是包含有Course持久對象的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的名字進行模糊查找,返回的是包含有Course持久對象的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個業務方法,你可以根據情況增加其它的業務方法。在CourseBean中,通過Hibernate來操作潛在的數據庫資源。

要保存Course數據到數據庫,可以通過:



session.save(Course);

方法來保存,它相當于使用在JDBC中執行以下語句:



Connection con=…
Statement stmt=con.createStatement();
stmt.executeUpdate("insert into courses values('"+course.getId(),+"','"+course.getName()+"')");
con.close();

可以看出,通過使用Hibernate,可以大大減少數據訪問的復雜度。

在JSP中調用業務邏輯
添加數據
CourseBean這個業務對象封裝了和Hibernate的交互關系,從而使JSP和Hibernate關系的解藕。我們來看測試主頁面的部分代碼,如例程7所示。

例程7 測試Hibernate開發的應用(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>::增加一個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>
::刪除一個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>

首先通過一個值對象Course(這個類正好是Hibernate使用的持久對象,這里作為值對象來傳遞數據)接收獲得的參數,然后CourseBean的addCourse(Course)方法把數據保存到數據庫。可以看出,通過使用Hibernate,把數據從表單中添加到數據庫非常簡單。

查詢
下面來看模糊查找的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());
}
%>
….

它實際上調用的是CourseBean的Iterator getSomeCourse(String name)方法。我們來回顧一下這個方法中的代碼:



/**
*按course的名字進行模糊查找
*/
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;
}

在查詢前,首先調用beginTransaction方法啟動新的Hibernate事務,然后創建一個Query對象,在創建這個對象時,同時指定查詢的語句。

注意,在查詢語句:


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

中,它雖然和普通的SQL語句相似,但是不同,在數據庫中,使用的表的名字是Courses,而在這個查詢語句中使用的是Course,它和持久對象的名字一致,也就是說,這個查詢的概念是查詢持久對象,而不是數據庫的記錄。

創建了查詢對象Query后,需要設置查詢的參數,它和在JDBC中PreparedStatement對象中設置參數的方法相似。通過"Iterator it= query.iterate()"語句來執行查詢,并且返回一個Iterator對象。在這里使用了Hibernate提供的查詢機制,一般的JDBC查詢返回的是ResultSet對象,而這里返回的是包含了CourseBean對象的Iterator。

要查詢系統中所有的Course,也同樣非常簡單,可以通過例程9所示的代碼實現。

例程9 查詢數據庫中所有的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());
}
%>

實際上調用的是CourseBean的getAllCourses方法,它和getSomeCourse方法機制一樣,就不再介紹了。

刪除數據
在JSP中,使用以下的代碼來執行刪除操作。
例程10 刪除數據庫中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("不存在這個記錄");
}
%>

我們來看CourseBean中執行刪除操作的具體代碼:


/**
*刪除給定ID的course
*/
public void deleteCourse(String id)throws HibernateException
{
beginTransaction(); 
Course course=(Course)session.load(Course.class,id); 
session.delete(course);
endTransaction(true);
}

在這個方法中,首先開始一個事務,然后通過session.load(Course.class,id)方法來裝載指定ID的持久對象,接下來通過"session.delete(course)"來刪除已經裝載的course,并且結束Hibernate事務。

總結
下面總結一下使用Hibernate的開發過程:

1、 配置Hibernate(一次即可);
2、 確定數據表;

3、 創建持久對象;

4、 編寫對象和數據表的映射描述;

5、 編寫和業務邏輯。

實際上,上面的過程和使用EJB沒有什么區別:在使用EJB時,首先當然也是配置環境,初始化數據表;然后創建實體Bean(對象于Hibernate的持久對象);接下來編寫部署描述符(ejb-jar.xml,廠商專有的部署描述),在這些部署描述符里,指定了EJB和數據表的映射關系,如果多個實體Bean存在關聯關系,需要描述它們之間的關系,這些描述對應于Hibernate中持久對象的描述,如Course.hbm.xml;往往我們并不在應用程序中直接操作實體Bean,而是通過業務對象(如會話Bean)來操作,這里的會話Bean可以簡單的和Hibernate中執行業務邏輯的JavaBean對應。這里只是簡單的類比,不是絕對的,比如我們同樣可以在會話Bean中訪問Hibernate持久對象,也就是說使用Hibernate,同樣可以把業務邏輯放在會話Bean中。

通過本文的學習,相信讀者對Hibernate已經有了初步的認識,并且能夠使用Hibernate開發簡單的應用。在下一篇中,我們將學習怎么使用Hibernate來為復雜的數據表進行映射,并且維護它們之間的關系。


參考資料

http://www.apache.org 下載Tomcat。
Hibernate的官方網站,http://hibernate.bluemars.net/ ,包含了Hibernate最新資料。

Hibernate中文論壇,hibernate.fankai.com包含了Hibernate較多的參考資料。

包含了Hibernate技術討論網站,www.jdon.com,

于Hibernate、JDO、CMP等技術的熱烈討論1:
http://www.jdon.com/jive/thread.jsp?forum=16&thread=6062&start=0&msRange=15

于Hibernate、JDO、CMP等技術的熱烈討論2:
http://www.theserverside.com/discussion/thread.jsp?thread_id=19732

Hibernate2 Reference Documentation,可以從Hibernate官方網站獲得,非常好的參考資料。

Hibernate In Action,一本非常專業的Hibernate參考書,由Hibernate項目主要開發人員Gavin King 等著,Manning出版社出版。您可以從 http://www.theserverside.com 獲得本書的部分章節。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜激情视频| 日韩一二三区不卡| 毛片av一区二区三区| 国产精品色婷婷久久58| 欧美老女人第四色| av激情成人网| 久久国产欧美日韩精品| 一区二区久久久久| 国产欧美日韩综合精品一区二区| 欧美军同video69gay| 色狠狠一区二区三区香蕉| 成人国产一区二区三区精品| 麻豆freexxxx性91精品| 亚洲成人激情社区| 日韩一区在线播放| 欧美激情一区三区| 精品国产成人系列| 日韩午夜激情视频| 91精品国产一区二区三区蜜臀| 色婷婷亚洲一区二区三区| 国产91露脸合集magnet| 国内不卡的二区三区中文字幕| 亚洲综合一二区| 专区另类欧美日韩| 国产精品乱子久久久久| 国产日韩欧美高清在线| 久久久国产精华| 久久综合久久综合久久综合| 日韩三级免费观看| 欧美一级夜夜爽| 欧美一区二区三区的| 欧美人xxxx| 91精品国产综合久久婷婷香蕉| 在线精品视频小说1| 色婷婷av一区二区三区大白胸| 成人av免费在线| 99久免费精品视频在线观看| 成人动漫一区二区三区| 91在线视频观看| 91亚洲国产成人精品一区二三| eeuss鲁片一区二区三区在线看| 国产91丝袜在线观看| 国产91丝袜在线观看| eeuss鲁片一区二区三区 | 国产精品电影一区二区| 中文字幕中文乱码欧美一区二区| 国产精品久久99| 一区二区在线观看视频 | 青青草91视频| 美女www一区二区| 精品一区二区日韩| 国产精品911| 成人国产免费视频| 91麻豆成人久久精品二区三区| 色综合天天狠狠| 欧美系列日韩一区| 欧美一级高清大全免费观看| 日韩精品一区二区三区在线观看| 久久久精品天堂| 国产精品少妇自拍| 蜜臀精品一区二区三区在线观看| 另类调教123区| 国产成人99久久亚洲综合精品| 97se亚洲国产综合自在线 | 7777精品伊人久久久大香线蕉 | 最新日韩在线视频| 亚洲一级片在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 精品无码三级在线观看视频| 成人小视频免费在线观看| 成人不卡免费av| 欧美伦理视频网站| 久久婷婷国产综合精品青草| 中文字幕在线观看不卡| 日韩精品欧美成人高清一区二区| 久久精品国产秦先生| 99综合电影在线视频| 69久久夜色精品国产69蝌蚪网| www激情久久| 一区二区三区中文字幕在线观看| 免费观看91视频大全| www.亚洲人| 日韩欧美成人一区二区| 亚洲免费资源在线播放| 久久精品999| 色综合久久中文字幕| 精品国产一区二区三区不卡| 亚洲精品一二三四区| 奇米影视一区二区三区| 91麻豆自制传媒国产之光| 日韩色在线观看| 一区二区三区欧美日韩| 久久99国产精品免费| 91免费小视频| 久久久久久亚洲综合| 亚洲成人免费看| 99热国产精品| 久久精品水蜜桃av综合天堂| 亚洲国产aⅴ天堂久久| 成人黄色国产精品网站大全在线免费观看 | 亚洲精品美国一| 国产激情一区二区三区四区| 欧美伦理影视网| 亚洲区小说区图片区qvod| 国产成人精品影视| 综合精品久久久| 免费在线成人网| 欧美日韩日本视频| 亚洲色图清纯唯美| 国产成人a级片| 日韩精品在线一区| 婷婷丁香激情综合| 91丨porny丨国产| 久久精品一区二区| 国内精品国产三级国产a久久| 欧美日产国产精品| 亚洲精品久久嫩草网站秘色| 东方欧美亚洲色图在线| 亚洲精品在线一区二区| 男人操女人的视频在线观看欧美| 色哟哟国产精品| 自拍av一区二区三区| 成人福利视频网站| 国产精品久久福利| 99久久亚洲一区二区三区青草| 国产亚洲精品免费| 国产精品一区一区| 久久久国产精品不卡| 国产综合色产在线精品| 337p日本欧洲亚洲大胆色噜噜| 人禽交欧美网站| 欧美一卡2卡3卡4卡| 免费视频最近日韩| 日韩欧美专区在线| 国内精品视频一区二区三区八戒| 精品少妇一区二区三区日产乱码 | 精品美女在线播放| 国产一区二区精品久久| 26uuu欧美| 国产成人精品午夜视频免费| 欧美国产综合一区二区| eeuss鲁片一区二区三区| 亚洲欧美日韩成人高清在线一区| 91色婷婷久久久久合中文| 亚洲欧美偷拍三级| 欧美日韩国产首页在线观看| 午夜久久久久久| 日韩免费电影一区| 国产精品77777| 成人免费在线观看入口| 色综合天天狠狠| 五月婷婷欧美视频| 欧美电视剧在线观看完整版| 国产精品中文字幕日韩精品| 国产欧美日韩综合| 91福利精品视频| 肉色丝袜一区二区| 欧美xxxxxxxxx| 成人污污视频在线观看| 亚洲综合另类小说| 欧美成人在线直播| aaa亚洲精品| 亚洲妇熟xx妇色黄| 精品国产一区二区三区久久影院| 丰满少妇久久久久久久| 又紧又大又爽精品一区二区| 91精品婷婷国产综合久久| 国产精品一区二区久久精品爱涩| 国产精品日韩精品欧美在线| 欧美亚州韩日在线看免费版国语版| 日日夜夜一区二区| 久久精品视频一区二区三区| 91麻豆国产精品久久| 蜜臀a∨国产成人精品| 日本一区二区三区电影| 欧美日韩黄色影视| 国产精品一区专区| 亚洲国产综合视频在线观看| 2023国产精品视频| 色婷婷av久久久久久久| 另类的小说在线视频另类成人小视频在线| 亚洲国产精品高清| 欧美精品 国产精品| 成人免费电影视频| 全国精品久久少妇| 亚洲日本在线天堂| 精品动漫一区二区三区在线观看| 91色九色蝌蚪| 国产剧情一区二区| 亚洲成国产人片在线观看| 中文字幕免费一区| 精品欧美黑人一区二区三区| 色8久久人人97超碰香蕉987| 国产在线精品一区二区不卡了| 亚洲激情在线激情| 久久精品人人爽人人爽| 日韩欧美国产三级| 欧美日韩在线播放三区四区| bt欧美亚洲午夜电影天堂| 国产在线一区二区|