入門-使用dto解決數(shù)據(jù)封裝與持久對象自動維護問題,查詢條件page類分頁結(jié)果第一章hibernate_第1頁
入門-使用dto解決數(shù)據(jù)封裝與持久對象自動維護問題,查詢條件page類分頁結(jié)果第一章hibernate_第2頁
入門-使用dto解決數(shù)據(jù)封裝與持久對象自動維護問題,查詢條件page類分頁結(jié)果第一章hibernate_第3頁
入門-使用dto解決數(shù)據(jù)封裝與持久對象自動維護問題,查詢條件page類分頁結(jié)果第一章hibernate_第4頁
入門-使用dto解決數(shù)據(jù)封裝與持久對象自動維護問題,查詢條件page類分頁結(jié)果第一章hibernate_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論