版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Hibernate 入門第一章講師:william本門課程目標(biāo)學(xué)完本門課程后,你能夠:使用Hibernate實現(xiàn)數(shù)據(jù)持久化在項目中熟練使用Hibernate使用Hibernate實現(xiàn)對數(shù)據(jù)庫的增刪改查操作掌握HQL查詢掌握Criteria查詢預(yù)習(xí)檢查什么是持久化?為什么需要持久化?為什么要學(xué)習(xí)Hibernate?使用Hibernate實現(xiàn)對數(shù)據(jù)庫增、刪、改操作的步驟?本章任務(wù)編寫Hibernate的配置文件使用Hibernate實現(xiàn)用戶的登錄和注冊使用Hibernate完成數(shù)據(jù)增刪改操作JDBC操作數(shù)據(jù)庫的步驟通過Class.forName 注冊驅(qū)動,通過DriverManager.getCo
2、nnection 獲得數(shù)據(jù)庫連接通過獲得的Connection 對象生成Statement 對象使用Statement 對象對數(shù)據(jù)庫進行增、刪、改、查的操作關(guān)閉Connection 對象和Statement 對象在整個操作過程中,需要對SQLException 進行捕獲和處理List users = new ArrayList();User user ;try Connection conn = DBUtil.getConnection(); Statement statement = conn.createStatement(); ResultSet resultSet = statemen
3、t.executeQuery(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ù)庫連接創(chuàng)建Statement對象使用Statement對象對數(shù)據(jù)庫進行操作關(guān)閉Connection 對象和Statement 對象處理異常JDBC的缺點開發(fā)效率低代
4、碼冗余pstmt的setXX方法方法參數(shù)冗余的getXX方法如果POJO的屬性很多,代碼增加重復(fù)性工作多能否使用對象將實體作為參數(shù),簡單的完成增刪改查操作?Hibernate簡介Hibernate作者Gavin KingHibernate創(chuàng)始人 Hibernate in action 作者EJB 3.0的Entity bean specification的實際領(lǐng)導(dǎo)人(sun任命的領(lǐng)導(dǎo)人是Linda DeMichiel)參加了XDoclet和Middlegen的開發(fā)2003年9月加入JBoss,全職進行Hibernate開發(fā)Hibernate一個開放源代碼的對象關(guān)系映射框架-將實體對象和數(shù)據(jù)庫的
5、表建立對應(yīng)關(guān)系對JDBC進行了非常輕量級的對象封裝Hibernate優(yōu)勢Hibernate 是一個優(yōu)秀的Java 持久化層解決方案是當(dāng)今主流的對象關(guān)系映射工具Hibernate 簡化了JDBC 繁瑣的編碼Hibernate 將數(shù)據(jù)庫的連接信息都存放在配置文件中Session session = HiberanteUtil.getSession();Query query = session.createQuery(from User);List users =(List)query.list();Hibernate配置文件hibernate.cfg.xml文件映射文件的配置(*.hbm.xml
6、) org.hibernate.dialect.Oracle9Dialect jdbc:oracle:thin:10.0.0.188:1521:ORCLjbitbdqn oracle.jdbc.driver.OracleDriver數(shù)據(jù)庫URL數(shù)據(jù)庫用戶名數(shù)據(jù)庫密碼數(shù)據(jù)庫驅(qū)動使用的不同數(shù)據(jù)庫類型hibernate.cfg.xml文件 User.hbm.xml文件持久化與ORM3-1持久化將程序中數(shù)據(jù)在瞬時狀態(tài)和持久狀態(tài)間轉(zhuǎn)換的機制持久化與ORM3-2持久化層JDBC 就是一種持久化機制將程序數(shù)據(jù)直接保存成文本文件也是持久化機制的一種實現(xiàn)在分層結(jié)構(gòu)中,DAO 層(數(shù)據(jù)訪問層)也被稱為持久化層持久
7、化完成的操作將對象保存到關(guān)系型數(shù)據(jù)庫中將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)讀取出來以對象的形式封裝持久化與ORM3-3ORM(Object Relational Mapping,對象關(guān)系映射)編寫程序的時候,以面向?qū)ο蟮姆绞教幚頂?shù)據(jù)保存數(shù)據(jù)的時候,卻以關(guān)系型數(shù)據(jù)庫的方式存儲ORM解決方案包含下面四個部分在持久化對象上執(zhí)行基本增、刪、改、查操作的API用于對持久化對象或?qū)傩圆樵兊囊环N語言或者API用于實體關(guān)系映射的工具能夠與事務(wù)對象交互、執(zhí)行檢查、延遲加載以及其他優(yōu)化功能準(zhǔn)備Hibernate3-1下載需要的jar包下載HibernateHibernate 的官方主頁是 Hibernate包目錄結(jié)構(gòu)部署jar
8、包hibernate3.jarrequired 目錄下的jar 包Mysql 數(shù)據(jù)庫驅(qū)動jar包日志包:slf4j-log4j,log4j兩個jar包準(zhǔn)備Hibernate3-2創(chuàng)建Hibernate配置文件用于配置數(shù)據(jù)庫連接運行時所需的各種屬性默認(rèn)文件名為“hibernate.cfg.xml” org.hibernate.dialect.Oracle9Dialect jdbc:mysql:/localhost:3306/testrootrootcom.mysql.jdbc.Driver準(zhǔn)備Hibernate3-3創(chuàng)建實體類和實體映射文件定義實體類(也稱持久化類),實現(xiàn)java.io.Seri
9、alizable 接口,添加默認(rèn)構(gòu)造方法配置映射文件(*.hbm.xml)向hibernate.cfg.xml文件中配置映射文件public class 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 方法 共性問題集中講
10、解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解小結(jié)簡述JDBC的缺點簡述Hibernate的優(yōu)勢為項目添加Hibernate的準(zhǔn)備工作使用Hibernate 操作數(shù)據(jù)庫使用Hibernate操作數(shù)據(jù)庫需要七個步驟(1)讀取并解析配置文件(2)讀取并解析映射信息,創(chuàng)建SessionFactory(3)打開Session(4)開始一個事務(wù)(增刪改操作必須,查詢操作可選)Configuration conf = newConfiguration().configure();SessionFactory sf = conf.buildSessionFactory();Session sessio
11、n = sf.openSession();Transaction tx = session.beginTransaction();使用Hibernate 操作數(shù)據(jù)庫使用Hibernate操作數(shù)據(jù)庫需要七個步驟(5)數(shù)據(jù)庫操作(6)提交事務(wù)(回滾事務(wù))(7)關(guān)閉sessionsession.save(user);/或其它操作 mit();(tx.rollback();)session.close();如果Hibernate 配置文件中,current_session_context_class 參數(shù)設(shè)置為thread 并采用SessionFactory 的getCurrentSession()方
12、法獲的Session 實例則不需要此步演示示例:使用Hibernate 操作數(shù)據(jù)庫的步驟使用Hibernate實現(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
13、 = session.beginTransaction(); session.save(user); mit(); catch (HibernateException e) tx.rollback(); e.printStackTrace(); finally session.close(); sessionFactory.close();1.讀取配置文件2.創(chuàng)建SessionFactory3.打開session4.開始一個事務(wù)5.持久化操作6.提交事務(wù)6.回滾事務(wù)7.關(guān)閉session使用Hibernate實現(xiàn)用戶的修改、刪除Configuration conf = null;Session
14、Factory 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); mit(); catch (HibernateException e) tx.ro
15、llback(); 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 = sess
16、ionFactory.openSession(); tx = session.beginTransaction(); session.delete(user); mit(); catch (HibernateException e) tx.rollback(); e.printStackTrace(); finally session.close(); sessionFactory.close();刪除用戶刪除用戶信息增、刪、改操作一定要在事務(wù)環(huán)境中完成修改、刪除數(shù)據(jù)時,需要先加載數(shù)據(jù)共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解使用Hibernate實現(xiàn)查詢操作Sessi
17、on提供了兩種方法加載數(shù)據(jù)Object get(Class clazz, Serializable id):通過實體類Class對象和ID 加載數(shù)據(jù)Object load(Class theClass, Serializable id):通過實體類Class對象和ID加載數(shù)據(jù)兩種方法加載數(shù)據(jù)的區(qū)別使用get 方法加載數(shù)據(jù)時,如果數(shù)據(jù)不存在,返回null對象使用load 方法加載數(shù)據(jù)時,如果數(shù)據(jù)不存在,系統(tǒng)就會拋出異常Configuration conf = null;SessionFactory sessionFactory = null;Session session = null;Tran
18、saction tx = null;try conf = new Configuration().configure(); sessionFactory = conf.buildSessionFactory(); session = sessionFactory.openSession(); session.get(User.class,1001); catch (HibernateException e) e.printStackTrace(); finally session.close(); sessionFactory.close();使用get方式加載數(shù)據(jù)Configuration conf = null;SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try conf = new Configurati
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年自然科學(xué)研究與試驗發(fā)展服務(wù)項目發(fā)展計劃
- 2024年文化、體育及娛樂用品批發(fā)服務(wù)合作協(xié)議書
- 2024年超細銅粉項目發(fā)展計劃
- 金屬粉末 有效密度的測定 液體浸透法 征求意見稿
- 2024-2025學(xué)年山東省臨沂數(shù)學(xué)九年級第一學(xué)期開學(xué)達標(biāo)檢測試題【含答案】
- 2024年防靜電刷合作協(xié)議書
- 北京市國電系統(tǒng)-2023年《通信安規(guī)》科目 單選題+多選題+判斷題+簡答題真題拔高卷上半年A卷
- 北京市國電系統(tǒng)-2023年《變電安規(guī)》科目 單選題+多選題+判斷題+簡答題真題拔高卷上半年B卷
- 安徽省國家電網(wǎng)-2024年《通信安規(guī)》科目 單選題+多選題+判斷題+簡答題真題沖刺卷9月份B卷
- 2024年絲絹紡織及精加工產(chǎn)品項目發(fā)展計劃
- 人教版三年級美術(shù)下冊 第13課 彩線貼畫 課件(共10張PPT)
- 外研版五年級英語上冊全冊教案教學(xué)設(shè)計含教學(xué)反思
- 實驗室廢棄化學(xué)品收集技術(shù)規(guī)范GB/T31190-2014
- 電子元件廠商Logo標(biāo)識(鳳山書屋)
- 屋頂光伏發(fā)電項目屋面改造加固工程施工設(shè)計方案
- 古樹保護施工組織設(shè)計
- 交換機基本配置
- 小學(xué)科學(xué)實驗室制度小學(xué)科學(xué)實驗室儀器借用制度.doc
- 辦公室管理制度
- 工程施工設(shè)計方案客土噴播
- 河流地貌發(fā)育說課 (課堂PPT)
評論
0/150
提交評論