1hibernate入門ppt課件_第1頁
1hibernate入門ppt課件_第2頁
1hibernate入門ppt課件_第3頁
1hibernate入門ppt課件_第4頁
1hibernate入門ppt課件_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第一章第一章hibernate入門本門課程目標(biāo)本門課程目標(biāo)n 學(xué)完本門課程后,你能夠:學(xué)完本門課程后,你能夠:n 使用使用Hibernate實現(xiàn)數(shù)據(jù)持久化實現(xiàn)數(shù)據(jù)持久化n 在項目中熟練使用在項目中熟練使用Hibernaten 使用使用Hibernate實現(xiàn)對數(shù)據(jù)庫的增刪改查操作實現(xiàn)對數(shù)據(jù)庫的增刪改查操作n 掌握掌握HQL查詢查詢n 掌握掌握Criteria查詢查詢n 掌握掌握Oracle數(shù)據(jù)庫的常用操作數(shù)據(jù)庫的常用操作n 優(yōu)化優(yōu)化Oracle數(shù)據(jù)庫的性能數(shù)據(jù)庫的性能課程項目展示課程項目展示 藍點租房系統(tǒng)藍點租房系統(tǒng)本章目標(biāo)本章目標(biāo)n 了解了解Hibernate優(yōu)勢優(yōu)勢n 理解持久化及理解持久化

2、及ORM的概念的概念n 了解了解Hibernate的基本原理的基本原理n 搭建項目框架編寫搭建項目框架編寫hibernate配置文件、實體映射配置文件、實體映射文件文件n 學(xué)會使用學(xué)會使用Hibernate完成數(shù)據(jù)增刪改操作完成數(shù)據(jù)增刪改操作n 實體對象的三種狀態(tài)實體對象的三種狀態(tài)JDBC操作數(shù)據(jù)庫的步驟操作數(shù)據(jù)庫的步驟n 通過通過Class.forName 注冊驅(qū)動,通過注冊驅(qū)動,通過DriverManager.getConnection 獲得數(shù)據(jù)庫連接獲得數(shù)據(jù)庫連接n 通過獲得的通過獲得的Connection 對象生成對象生成Statement 對對象象n 使用使用Statement 對象

3、對數(shù)據(jù)庫進行增、刪、改、對象對數(shù)據(jù)庫進行增、刪、改、查的操作查的操作n 關(guān)閉關(guān)閉Connection 對象和對象和Statement 對象對象n 在整個操作過程中,需要對在整個操作過程中,需要對SQLException 進行進行捕獲和處理捕獲和處理List users = new ArrayList();User user ;try Connection conn = DBUtil.getConnection(); Statement statement = conn.createStatement(); ResultSet resultSet = statement.executeQuery

4、(select * from users ); while(resultSet.next() user = new User(); user.setId(resultSet.getInt(1); /省略其他賦值方法省略其他賦值方法 . users.add(User); statement.close(); conn.close(); catch (Exception e) e.printStackTrace();獲得數(shù)據(jù)庫連接獲得數(shù)據(jù)庫連接創(chuàng)建創(chuàng)建Statement對象對象使用使用Statement對象對象對數(shù)據(jù)庫進行操作對數(shù)據(jù)庫進行操作關(guān)閉關(guān)閉Connection 對象對象和和Stateme

5、nt 對象對象處理異常處理異常JDBC的缺點的缺點n 開發(fā)效率低開發(fā)效率低n 代碼冗余代碼冗余n pstmt的的setXX方法方法n 方法參數(shù)冗余的方法參數(shù)冗余的getXX方法方法n 如果如果POJO的屬性很多,代碼增加的屬性很多,代碼增加n 重復(fù)性工作多重復(fù)性工作多能否使用對象將能否使用對象將POJO作為參數(shù),簡單的完成增刪改查操作?作為參數(shù),簡單的完成增刪改查操作?Hibernate簡介簡介n Hibernate作者作者Gavin Kingn Hibernate創(chuàng)始人創(chuàng)始人n Hibernate in action 作者作者n EJB 3.0的的Entity bean specificat

6、ion的實際領(lǐng)導(dǎo)的實際領(lǐng)導(dǎo)人人sun任命的領(lǐng)導(dǎo)人是任命的領(lǐng)導(dǎo)人是Linda DeMichiel)n 參加了參加了XDoclet和和Middlegen的開發(fā)的開發(fā)n 2003年年9月加入月加入JBoss,全職進行,全職進行Hibernate開發(fā)開發(fā)n Hibernaten 一個開發(fā)源代碼的對象關(guān)系映射框架一個開發(fā)源代碼的對象關(guān)系映射框架n 對對JDBC進行了非常輕量級的對象封裝進行了非常輕量級的對象封裝n 將將JavaBean對象和數(shù)據(jù)庫的表建立對應(yīng)關(guān)系對象和數(shù)據(jù)庫的表建立對應(yīng)關(guān)系Hibernate優(yōu)勢優(yōu)勢n Hibernate 是一個優(yōu)秀的是一個優(yōu)秀的Java 持久化層解決方案持久化層解決方案

7、n 是當(dāng)今主流的對象是當(dāng)今主流的對象關(guān)系映射關(guān)系映射ORM工具工具n Hibernate 簡化了簡化了JDBC 繁瑣的編碼繁瑣的編碼n Hibernate 將數(shù)據(jù)庫的連接信息都存放在配置文將數(shù)據(jù)庫的連接信息都存放在配置文件中件中Session session = HiberanteUtil.getSession();Query query = session.createQuery(from User);List users =(List)query.list();本章目標(biāo)本章目標(biāo)n 了解了解Hibernate優(yōu)勢優(yōu)勢n 理解持久化及理解持久化及ORM的概念的概念n 了解了解Hibernate

8、的基本原理的基本原理n 搭建項目框架編寫搭建項目框架編寫hibernate配置文件、實體映射配置文件、實體映射文件文件n 學(xué)會使用學(xué)會使用Hibernate完成數(shù)據(jù)增刪改操作完成數(shù)據(jù)增刪改操作n 實體對象的三種狀態(tài)實體對象的三種狀態(tài)持久化與持久化與ORM3-1n 持久化持久化n 將程序中數(shù)據(jù)在瞬時狀態(tài)和持久狀態(tài)間轉(zhuǎn)換的機將程序中數(shù)據(jù)在瞬時狀態(tài)和持久狀態(tài)間轉(zhuǎn)換的機制制持久化與持久化與ORM3-2n 持久化層持久化層n JDBC 就是一種持久化機制就是一種持久化機制n 將程序數(shù)據(jù)直接保存成文本文件也是持久化機制將程序數(shù)據(jù)直接保存成文本文件也是持久化機制的一種實現(xiàn)的一種實現(xiàn)n 在分層結(jié)構(gòu)中,在分層結(jié)

9、構(gòu)中,DAO 層數(shù)據(jù)訪問層也被稱為層數(shù)據(jù)訪問層也被稱為持久化層持久化層n 持久化完成的操作持久化完成的操作n 將對象保存到關(guān)系型數(shù)據(jù)庫中將對象保存到關(guān)系型數(shù)據(jù)庫中n 將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)讀取出來將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)讀取出來n 以對象的形式封裝以對象的形式封裝持久化與持久化與ORM3-3n ORMObject Relational Mapping,對象關(guān)系,對象關(guān)系映射)映射)n 編寫程序的時候,以面向?qū)ο蟮姆绞教幚頂?shù)據(jù)編寫程序的時候,以面向?qū)ο蟮姆绞教幚頂?shù)據(jù)n 保存數(shù)據(jù)的時候,卻以關(guān)系型數(shù)據(jù)庫的方式存儲保存數(shù)據(jù)的時候,卻以關(guān)系型數(shù)據(jù)庫的方式存儲n ORM解決方案包含下面四個部分解決方案包含

10、下面四個部分n 在持久化對象上執(zhí)行基本增、刪、改、查操作的在持久化對象上執(zhí)行基本增、刪、改、查操作的APIn 用于對持久化對象或?qū)傩圆樵兊囊环N語言或者用于對持久化對象或?qū)傩圆樵兊囊环N語言或者APIn 用于實體關(guān)系映射的工具用于實體關(guān)系映射的工具n 能夠與事務(wù)對象交互、執(zhí)行檢查、延遲加載以及能夠與事務(wù)對象交互、執(zhí)行檢查、延遲加載以及其他優(yōu)化功能其他優(yōu)化功能本章目標(biāo)本章目標(biāo)n 了解了解Hibernate優(yōu)勢優(yōu)勢n 理解持久化及理解持久化及ORM的概念的概念n 了解了解Hibernate的基本原理的基本原理n 搭建項目框架編寫搭建項目框架編寫hibernate配置文件、實體映射配置文件、實體映射文件

11、文件n 學(xué)會使用學(xué)會使用Hibernate完成數(shù)據(jù)增刪改操作完成數(shù)據(jù)增刪改操作n 實體對象的三種狀態(tài)實體對象的三種狀態(tài)Hibernate配置文件配置文件n hibernate.cfg.xml文件文件n 映射文件的配置(映射文件的配置(*.hbm.xml) org.hibernate.dialect.Oracle9Dialect jdbc:oracle:thin:88:1521:ORCLjbitbdqn oracle.jdbc.driver.OracleDriver數(shù)據(jù)庫數(shù)據(jù)庫URL數(shù)據(jù)庫用戶名數(shù)據(jù)庫用戶名數(shù)據(jù)庫密碼數(shù)據(jù)庫密碼數(shù)據(jù)庫驅(qū)動數(shù)據(jù)庫驅(qū)動使用的不同數(shù)據(jù)庫類型使用的不同數(shù)據(jù)

12、庫類型hibernate.cfg.xml文件文件 User.hbm.xml文件文件本章目標(biāo)本章目標(biāo)n 了解了解Hibernate優(yōu)勢優(yōu)勢n 理解持久化及理解持久化及ORM的概念的概念n 了解了解Hibernate的基本原理的基本原理n 搭建項目框架編寫搭建項目框架編寫hibernate配置文件、實體映射配置文件、實體映射文件文件n 學(xué)會使用學(xué)會使用Hibernate完成數(shù)據(jù)增刪改操作完成數(shù)據(jù)增刪改操作n 實體對象的三種狀態(tài)實體對象的三種狀態(tài)租房系統(tǒng)項目介紹租房系統(tǒng)項目介紹2-1n 租房系統(tǒng)是一個租房系統(tǒng)是一個B/S 架構(gòu)的信息發(fā)布平臺架構(gòu)的信息發(fā)布平臺n 系統(tǒng)包含的角色系統(tǒng)包含的角色n 注冊用

13、戶注冊用戶n 非注冊用戶非注冊用戶n 系統(tǒng)功能系統(tǒng)功能n 發(fā)布房屋信息注冊用戶)發(fā)布房屋信息注冊用戶)n 瀏覽房屋信息注冊用戶與非注冊用戶)瀏覽房屋信息注冊用戶與非注冊用戶)n 查看單個房屋信息注冊用戶與非注冊用戶)查看單個房屋信息注冊用戶與非注冊用戶)n 查詢房屋信息注冊用戶與非注冊用戶)查詢房屋信息注冊用戶與非注冊用戶)n 修改房屋信息注冊用戶)修改房屋信息注冊用戶)n 刪除房屋信息注冊用戶)刪除房屋信息注冊用戶)n租房系統(tǒng)項目介紹租房系統(tǒng)項目介紹2-2n 租房系統(tǒng)數(shù)據(jù)庫表租房系統(tǒng)數(shù)據(jù)庫表準(zhǔn)備準(zhǔn)備Hibernate3-1n 下載需要的下載需要的jar包包n 下載下載Hibernaten H

14、ibernate 的官方主頁是的官方主頁是n 推薦下載推薦下載hibernate-distribution-3.3.2.GA-dist.zipn Hibernate包目錄結(jié)構(gòu)包目錄結(jié)構(gòu)n 部署部署jar包包n hibernate3.jarn required 目錄下的目錄下的jar 包包n Oracle 數(shù)據(jù)庫驅(qū)動數(shù)據(jù)庫驅(qū)動jar包包準(zhǔn)備準(zhǔn)備Hibernate3-2n 創(chuàng)建創(chuàng)建Hibernate配置文件配置文件n 用于配置數(shù)據(jù)庫連接用于配置數(shù)據(jù)庫連接n 運行時所需的各種屬性運行時所需的各種屬性n 默認文件名為默認文件名為“hibernate.cfg.xml” org.

15、hibernate.dialect.Oracle9Dialect jdbc:oracle:thin:88:1521:ORCLjbitbdqn oracle.jdbc.driver.OracleDriver準(zhǔn)備準(zhǔn)備Hibernate3-3n 創(chuàng)建實體類和實體映射文件創(chuàng)建實體類和實體映射文件n 定義實體類也稱持久化類),實現(xiàn)定義實體類也稱持久化類),實現(xiàn)java.io.Serializable 接口,添加默認構(gòu)造方法接口,添加默認構(gòu)造方法n 配置映射文件(配置映射文件(*.hbm.xml)n 向向hibernate.cfg.xml文件中配置映射文件文件中配置映射文件public c

16、lass User implements java.io.Serializable /字段字段 private Integer id; private String name; private String password; private String telephone; private String username; private String isadmin; public User() /省略省略getter&setter 方法方法 SEQ_ID 指導(dǎo)指導(dǎo)為租房網(wǎng)系統(tǒng)配置為租房網(wǎng)系統(tǒng)配置Hibernaten 訓(xùn)練要點:訓(xùn)練要點:n Hibernate配置文件配置配置文件

17、配置n 實體映射文件配置實體映射文件配置n 需求說明:需求說明:n 創(chuàng)建租房網(wǎng)項目創(chuàng)建租房網(wǎng)項目HouseRent,并為其增加,并為其增加Hibernate支持支持n 添加添加jar包包n 編寫配置文件編寫配置文件n 編寫實體類及映射文件用戶對象)編寫實體類及映射文件用戶對象)講解需求說明講解需求說明指導(dǎo)指導(dǎo)為租房網(wǎng)系統(tǒng)配置為租房網(wǎng)系統(tǒng)配置Hibernaten 實現(xiàn)思路:實現(xiàn)思路:n 創(chuàng)建項目創(chuàng)建項目HouseRent及相應(yīng)的包,并導(dǎo)入及相應(yīng)的包,并導(dǎo)入Hibernate 框架所需的框架所需的jar包包n 編寫配置文件編寫配置文件hibernate.cfg.xml,指定數(shù)據(jù)庫連,指定數(shù)據(jù)庫連接

18、信息,指定接信息,指定ORM映射文件映射文件n 編寫實體類編寫實體類User.java,屬性與,屬性與Users表的字段對表的字段對應(yīng)應(yīng)n 編寫實體映射文件,指定編寫實體映射文件,指定Users表和表和User類的映類的映射關(guān)系射關(guān)系完成時間:完成時間:20分鐘分鐘共性問題集中講解共性問題集中講解n常見調(diào)試問題及解決辦法常見調(diào)試問題及解決辦法n代碼規(guī)范問題代碼規(guī)范問題共性問題集中講解共性問題集中講解小結(jié)小結(jié)n 簡述簡述JDBC的缺點的缺點n 簡述簡述Hibernate的優(yōu)勢的優(yōu)勢n 為項目添加為項目添加Hibernate的準(zhǔn)備工作的準(zhǔn)備工作本章目標(biāo)本章目標(biāo)n 了解了解Hibernate優(yōu)勢優(yōu)勢

19、n 理解持久化及理解持久化及ORM的概念的概念n 了解了解Hibernate的基本原理的基本原理n 搭建項目框架編寫搭建項目框架編寫hibernate配置文件、實體映射配置文件、實體映射文件文件n 學(xué)會使用學(xué)會使用Hibernate完成數(shù)據(jù)增刪改操作完成數(shù)據(jù)增刪改操作n 實體對象的三種狀態(tài)實體對象的三種狀態(tài)使用使用Hibernate 操作數(shù)據(jù)庫操作數(shù)據(jù)庫n 使用使用Hibernate操作數(shù)據(jù)庫需要七個步驟操作數(shù)據(jù)庫需要七個步驟n (1讀取并解析配置文件讀取并解析配置文件n (2讀取并解析映射信息,創(chuàng)建讀取并解析映射信息,創(chuàng)建SessionFactoryn (3打開打開Sessionn (4開始

20、一個事務(wù)增刪改操作必須,查詢操作開始一個事務(wù)增刪改操作必須,查詢操作可選)可選)Configuration conf = newConfiguration().configure();SessionFactory sf = conf.buildSessionFactory();Session session = sf.openSession();Transaction tx = session.beginTransaction();使用使用Hibernate 操作數(shù)據(jù)庫操作數(shù)據(jù)庫n 使用使用Hibernate操作數(shù)據(jù)庫需要七個步驟操作數(shù)據(jù)庫需要七個步驟n (5數(shù)據(jù)庫操作數(shù)據(jù)庫操作n (6提交事

21、務(wù)回滾事務(wù))提交事務(wù)回滾事務(wù))n (7關(guān)閉關(guān)閉sessionsession.save(user);/或其它操作或其它操作txmit();(tx.rollback();)session.close();如果如果Hibernate 配置文件中配置文件中,current_session_context_class 參數(shù)參數(shù)設(shè)置為設(shè)置為thread 并采用并采用SessionFactory 的的getCurrentSession()方方法獲的法獲的Session 實例則不需要此步實例則不需要此步演示示例:使用演示示例:使用Hibernate 操作數(shù)據(jù)庫的步驟操作數(shù)據(jù)庫的步驟使用使用Hibernate實

22、現(xiàn)增加用戶實現(xiàn)增加用戶Configuration conf = null;SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try conf = new Configuration().configure(); sessionFactory = conf.buildSessionFactory(); session = sessionFactory.openSession(); tx = session.beginTransaction(); session.save(user);

23、 txmit(); catch (HibernateException e) tx.rollback(); e.printStackTrace(); finally session.close(); sessionFactory.close();1.讀取配置文件讀取配置文件2.創(chuàng)建創(chuàng)建SessionFactory3.打開打開session4.開始一個事務(wù)開始一個事務(wù)5.持久化操作持久化操作6.提交事務(wù)提交事務(wù)6.回滾事務(wù)回滾事務(wù)7.關(guān)閉關(guān)閉session使用使用Hibernate實現(xiàn)用戶的修改、刪除實現(xiàn)用戶的修改、刪除Configuration conf = null;SessionFacto

24、ry sessionFactory = null;Session session = null;Transaction tx = null;try conf = new Configuration().configure(); sessionFactory = conf.buildSessionFactory(); session = sessionFactory.openSession(); tx = session.beginTransaction(); session.update(user); txmit(); catch (HibernateException e) tx.rollb

25、ack(); e.printStackTrace(); finally session.close(); sessionFactory.close();修改用戶修改用戶信息修改用戶信息Configuration conf = null;SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try conf = new Configuration().configure(); sessionFactory = conf.buildSessionFactory(); session = s

26、essionFactory.openSession(); tx = session.beginTransaction(); session.delete(user); txmit(); catch (HibernateException e) tx.rollback(); e.printStackTrace(); finally session.close(); sessionFactory.close();刪除用戶刪除用戶刪除用戶信息刪除用戶信息增、刪、改操作一定要在事務(wù)環(huán)境中完成增、刪、改操作一定要在事務(wù)環(huán)境中完成修改、刪除數(shù)據(jù)時,需要先加載數(shù)據(jù)修改、刪除數(shù)據(jù)時,需要先加載數(shù)據(jù)指導(dǎo)指導(dǎo)實現(xiàn)

27、租房系統(tǒng)用戶的注冊實現(xiàn)租房系統(tǒng)用戶的注冊n 訓(xùn)練要點:訓(xùn)練要點:n 使用使用Hibernate保存數(shù)據(jù)保存數(shù)據(jù)n 需求說明:需求說明:n 實現(xiàn)租房系統(tǒng)的用戶注冊實現(xiàn)租房系統(tǒng)的用戶注冊n 實現(xiàn)思路:實現(xiàn)思路:n 創(chuàng)建創(chuàng)建DAO 接口接口n 創(chuàng)建創(chuàng)建Hibernate工具類工具類n 創(chuàng)建創(chuàng)建DAO 接口接口Hibernate實現(xiàn)類實現(xiàn)類n 實現(xiàn)用戶注冊實現(xiàn)用戶注冊n 創(chuàng)建業(yè)務(wù)接口創(chuàng)建業(yè)務(wù)接口n 實現(xiàn)業(yè)務(wù)接口實現(xiàn)業(yè)務(wù)接口n 編寫測試類,測試功能是否實現(xiàn)編寫測試類,測試功能是否實現(xiàn)完成時間:完成時間:25分鐘分鐘共性問題集中講解共性問題集中講解n常見調(diào)試問題及解決辦法常見調(diào)試問題及解決辦法n代碼規(guī)范問

28、題代碼規(guī)范問題共性問題集中講解共性問題集中講解使用使用Hibernate實現(xiàn)查詢操作實現(xiàn)查詢操作n Session提供了兩種方法加載數(shù)據(jù)提供了兩種方法加載數(shù)據(jù)n Object get(Class clazz, Serializable id):通過:通過實體類實體類Class對象和對象和ID 加載數(shù)據(jù)加載數(shù)據(jù)n Object load(Class theClass, Serializable id):通過實體類通過實體類Class對象和對象和ID加載數(shù)據(jù)加載數(shù)據(jù)n 兩種方法加載數(shù)據(jù)的區(qū)別兩種方法加載數(shù)據(jù)的區(qū)別n 使用使用get 方法加載數(shù)據(jù)時,如果數(shù)據(jù)不存在,返方法加載數(shù)據(jù)時,如果數(shù)據(jù)不存在,

29、返回回null對象對象n 使用使用load 方法加載數(shù)據(jù)時,如果數(shù)據(jù)不存在,系方法加載數(shù)據(jù)時,如果數(shù)據(jù)不存在,系統(tǒng)就會拋出異常統(tǒng)就會拋出異常Configuration conf = null;SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try conf = new Configuration().configure(); sessionFactory = conf.buildSessionFactory(); session = sessionFactory.openSess

30、ion(); session.get(User.class,1001); catch (HibernateException e) e.printStackTrace(); finally session.close(); sessionFactory.close();使用使用get方式加載數(shù)方式加載數(shù)據(jù)據(jù)Configuration conf = null;SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try conf = new Configuration().configure(); sessionFactory = conf.buildSessionFactory(); session = sessionFactory.openSession();

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論