




已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
J2EE架構與程序設計,第三講Hibernate,Hibernate簡介,Hibernate是一個持久化框架,主要用于ORM(Object/Relational Mapping)映射。 問題: 什么是持久化框架 為什么要用ORM Hibernate與EJB是什么關系,開發(fā)Hibernate程序基本步驟,配置Hibernate:指定數(shù)據(jù)庫連接,指定映射文件(默認名:hibernate.cfg.xml) 建立映射文件:告訴Hibernate那個實體類對應哪個表,哪個屬性對應哪個字段 建立實體Bean 建立會話工廠:用對話工廠獲得Hibernate Session對象是個好習慣,因為在程序中經(jīng)常需要獲得Session 使用Hibernate操作數(shù)據(jù)庫,hibernate.cfg.xml, org.hibernate.dialect.MySQLDialect jdbc:mysql:/localhost/techsys root root com.mysql.jdbc.Driver ,Role.hbm.xml, 資料:generator詳解,實例:修改書籍查詢,對角色表(Role)的,增刪改查 Chapter17/addrecord.jsp,持久化對象之間的關系,不同的session加載同一條數(shù)據(jù)形成的實體對象是不同的,反之是相同的。 Session session1=sessionFactory.openSession(); Session session2=sessionFactory.openSession(); User user1=(User)session1.get(User.class,id); User user2=(User)session1.get(User.class,id); User user3=(User)session2.get(User.class,id); if(user1=user2) If(user1=user3) If(user1.equals(user3),session相關操作,加載實體: session.get、session.load 刷新實體: session.refresh 判斷是否有臟數(shù)據(jù): session.isDirty(); 強制持久化: session.flush,復合主鍵,先把多個主鍵屬性封裝在一個類中 利用composite-id標簽配置復合主鍵 ,使用,使用實例PKAction.java,組件映射,若Teacher和Student類中都有firstName和lastName屬性,則可以用一個Name屬性進行封裝 Public class Name private String firstName;private String lastName Public class Teacher private Name name; private int courseID Public class Student private Name name; xml如下配置 ,基于注釋的組件映射,Embedded AttributeOverrides( AttributeOveride(name=“firstName”,column=Column(name=“firstName”) AttributeOveride(name=“l(fā)astName”,column=Column(name=“l(fā)astName”) ),多對一單向關聯(lián)關系,通常,對于數(shù)據(jù)庫中的關聯(lián)關系在Hibernate中我們通過組件的方式加以封裝,以此達到統(tǒng)一存取的目的。,Name:實體Bean的屬性名 Column:外鍵名 Class:關聯(lián)類的名稱 Cascade:該屬性指定哪些操作時級聯(lián)操作,上例中save-update表示在save或 update時候進行級聯(lián)操作,基于注釋的多對一關系,ManyToOne Cascade(value=(org.hibernate.annotations.CascadeType.SAVE_UPDATE) JoinColumn(name=“customer_id“),其它關聯(lián)關系,一對多(one-to-many) 一對一(one-to-one),Hibernate查詢,標準查詢API(Criteria) HQL查詢 SQL查詢,HQL,Hql(Hibernate Query Language)是Hibernate框架提供的一種數(shù)據(jù)操作方式,其語法上非常接近SQL,不同的是HQL是面向對象的,使用HQL可直接返回相應的持久化對象。另外,Hibernate也可以將SQL查詢出來的數(shù)據(jù)轉換為持久化對象,注意:在HQL中實體Bean的名稱和屬性是區(qū)分大 小寫的,但HQL中的關鍵字不區(qū)分大小寫, 如from可以寫成From,HQL的使用,String queryString = “from Mykeys as model where = :name”;/創(chuàng)建HQL語句 Query queryObject = getSession().createQuery(queryString);/創(chuàng)建查詢對象 queryObject.setParameter(“name”, value);/設置參數(shù) queryObject.list();/執(zhí)行查詢 注意錯誤:Exception in thread “main“ java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I,HQL查詢,不使用select:返回實體Bean對象列表 from orders 返回orders對象列表 使用select:返回某個屬性的值列表 select number from orders 則返回的orders中為String類型的列表,針對同名實體的查詢,在查詢時可以使用包指定查詢的類 select chapter17.entity.mymessage m,HQL分頁,利用Query的setFirstResult和setMaxResults方法進行分頁 例: Session session=HibernateSessionFactory.getSession(); Query q=session.createQuery(“from Orders“); q.setFirstResult(1);/從第2條記錄開始 q.setMaxResults(2);/每頁取2條 List list=q.list();,查詢緩存,若使用Hibernate緩存查詢則Hibernate在執(zhí)行時會先在緩存中找尋先前執(zhí)行過的的同樣的HQL的查詢結果,若找到則直接從緩存中取數(shù)據(jù),從而達到快速查詢的目的,使用緩存,一、在配置文件中打開緩存并指定緩存類 true org.hibernate.cache.HashtableCacheProvider 二、執(zhí)行Query對象的setCacheable方法進行緩存查詢,命名查詢,可以把HQL語句寫到xml中,在程序中加以引用(P638) 第一步: 第二步:把上述xml配置到hibernate.cfg.xml中,MyEclipse支持,所有的實體及配置可以通過MyEclipse反向工程生成,使用注釋(Annotations)配置Hibernate,安裝Hibernate注釋 MyEclipse6.5以上版本帶有注釋包 hibernate-annotations.jar hibernate-commons-annotations.jar ejb3-persistence.jar,Entity注釋,將一個JavaBean標識成實體Bean,用Entity注釋的Bean必須滿足以下條件: 必須有一個無參數(shù)的構造方法 實體Bean必須聲明為public 實體Bean不能被聲明為abstract,Table注釋,指明實體Bean對應的表信息 屬性name:表名稱(默認類名) 屬性catalog:數(shù)據(jù)庫名稱 Entity Table(name=“t_user”,catalog=“mydb”) Public class User ,id注釋,配置主鍵,可以是一個屬性也可以是多個屬性的組合。 主鍵可以應用于屬性頁可以應用于get方法,應用于屬性時,改屬性的get方法不會被Hibernate調用,可以去掉,GeneratedValue注釋,可指定主鍵訪問策略 GeneratedValue(strategy=javax.persistence.GenerationType.IDENTITY) javax.persistence.GenerationType.AUTO:自動確定主鍵類型 javax.persistence.GenerationType.IDENTITY:由數(shù)據(jù)庫確定下個主鍵值 javax.persistence.GenerationType.SEQUENCE:主鍵是SEQUENCE類型字段,使用GenericGenerator注釋產(chǎn)生主鍵值,該類可以使用Hibernate內置的各種主鍵生成策略來生成主鍵值 Id org.hibernate.annotations.GenericGenerator(name=“hibernate-uuid”,strategy=“uuid”) Ge
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工會活動壓氣球活動方案
- 工會外出活動方案
- 小班炭燒積木活動方案
- 小小放映員活動策劃方案
- 工會活動搬磚活動方案
- 小班分類活動方案
- 小班世界愛鳥日活動方案
- 少先隊參觀基地活動方案
- 山地自行車座墊活動方案
- 小院開業(yè)活動方案
- 企業(yè)員工保密協(xié)議書范本
- 營銷管理培訓生輪崗方案
- 氣相色譜分析苯系物實驗報告
- 居住區(qū)規(guī)劃智慧樹知到期末考試答案章節(jié)答案2024年湖南師范大學
- 公路防汛搶險應急演練腳本
- 大學生戀愛心理及愛的能力的培養(yǎng)
- 2024年陜西西安市第一社會福利院西安市救助管理站招聘34人歷年高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 生態(tài)環(huán)境保護與可持續(xù)發(fā)展智慧樹知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學
- MH-T 5003-2016 民用運輸機場航站樓離港系統(tǒng)工程設計規(guī)范
- 專題24 生物的進化-備戰(zhàn)2024年中考《生物》復習全考點
- 實訓實驗室安全準入管理制度
評論
0/150
提交評論