![Hibernate培訓(xùn)ppt課件_第1頁(yè)](http://file4.renrendoc.com/view/d1ee0b6b123dc1aea6a833389bf88c6c/d1ee0b6b123dc1aea6a833389bf88c6c1.gif)
![Hibernate培訓(xùn)ppt課件_第2頁(yè)](http://file4.renrendoc.com/view/d1ee0b6b123dc1aea6a833389bf88c6c/d1ee0b6b123dc1aea6a833389bf88c6c2.gif)
![Hibernate培訓(xùn)ppt課件_第3頁(yè)](http://file4.renrendoc.com/view/d1ee0b6b123dc1aea6a833389bf88c6c/d1ee0b6b123dc1aea6a833389bf88c6c3.gif)
![Hibernate培訓(xùn)ppt課件_第4頁(yè)](http://file4.renrendoc.com/view/d1ee0b6b123dc1aea6a833389bf88c6c/d1ee0b6b123dc1aea6a833389bf88c6c4.gif)
![Hibernate培訓(xùn)ppt課件_第5頁(yè)](http://file4.renrendoc.com/view/d1ee0b6b123dc1aea6a833389bf88c6c/d1ee0b6b123dc1aea6a833389bf88c6c5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、124原理和開(kāi)發(fā)流程緩存機(jī)制3對(duì)象間關(guān)聯(lián)關(guān)系HQL & Criteria ORM 框架原理Hibernate 開(kāi)發(fā)流程框架簡(jiǎn)介框架(Framework)什么是框架框架的特點(diǎn)框架的意義- 為處理某一類問(wèn)題給出的一整套方案- 給出運(yùn)用骨架,細(xì)節(jié)由開(kāi)發(fā)者定制- 面向接口- 重用性- 擴(kuò)展性- 屏蔽底層細(xì)節(jié),提高開(kāi)發(fā)效率- 構(gòu)造一致,穩(wěn)定性好,利于協(xié)同任務(wù)框架舉例框架ORM 框架DI 框架MVC 框架xxx 框架HibernateMyBatisJPASpringGuicexxx實(shí)現(xiàn)Bxxx實(shí)現(xiàn)AStruts1Struts2SpringMVCWeld每一種框架,都是為理處理某一類的問(wèn)題(ORM,DI,M
2、VC等);同時(shí),每一種框架都會(huì)有很多詳細(xì)實(shí)現(xiàn)。JDBCJavaApplicationJDBC優(yōu)點(diǎn):一些Java接口的集合,一致和數(shù)據(jù)庫(kù)交互的規(guī)范,一切數(shù)據(jù)庫(kù)都采用同一套操作流程。存在哪些缺乏?存在的缺乏改換數(shù)據(jù)庫(kù)?- 面向接口編程- 改換實(shí)現(xiàn)類對(duì)象和關(guān)系的阻抗?對(duì)象記錄CUD對(duì)象記錄R- 不能直接面向?qū)ο蟛僮?,需求?lái)回轉(zhuǎn)換。save,update,deleteinsert into tableupdate tabledelete from tableselect * from 大型工程jdbc代碼量?維護(hù)本錢?-效率低,維護(hù)本錢高。能否有處理方案?get(id)面向關(guān)系面向?qū)ο驩RMObjec
3、t/Relation Mapping對(duì)象-關(guān)系映射類表屬性字段記錄對(duì)象實(shí)例面向?qū)ο?vs 面向關(guān)系面向?qū)ο竺嫦蜿P(guān)系共同點(diǎn)都用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)區(qū)別1用類定義對(duì)象,用屬性保存數(shù)據(jù)。用表定義記錄,用字段保存數(shù)據(jù)。區(qū)別2類之間的關(guān)系:繼承,依賴,關(guān)聯(lián)表間關(guān)系:主鍵-外鍵區(qū)別3面向?qū)ο蠓绞皆L問(wèn)數(shù)據(jù)庫(kù)使用SQL語(yǔ)法ORM 就是要在類和表之間建立一個(gè)規(guī)范的映射關(guān)系,從而使對(duì)象可以永久耐久化到數(shù)據(jù)庫(kù)中,也可將數(shù)據(jù)庫(kù)中的數(shù)據(jù)復(fù)原成內(nèi)存中的對(duì)象。提供一種面向?qū)ο蟮姆绞絹?lái)訪問(wèn)數(shù)據(jù)庫(kù)。ORM 框架原理Java ApplicationORM FramewrokJava ApplicationJDBC編程,SQL語(yǔ)句,對(duì)象封
4、裝 JDBC編程SQL語(yǔ)句對(duì)象封裝 手動(dòng)自動(dòng)手動(dòng)不運(yùn)用ORM框架運(yùn)用ORM框架配置框架ORM APIData BaseData BaseORM 框架品牌ORM 框架HibernateMyBatisJPA別名iBATIS,開(kāi)源半自動(dòng)ORM框架(知道) Java Persistence API(知道)開(kāi)源ORM框架廣泛運(yùn)用(學(xué)習(xí)目的)其他ORM 框架品牌 ActiveJDBC - Java implementation of Active Record pattern, inspired by Ruby on Rails Cayenne, Apache, open source for Java
5、Kodo, commercial implementation of both Java Data Objects and Java Persistence API Torque, an object-relational mapper for Java Athena Framework, open source Java ORM, native support for multitenancy SaaS and remoting to Adobe Flex Carbonado, open source framework, backed by Berkeley DB or JDBC Ebea
6、n, open source ORM framework EclipseLink, Eclipse persistence platform Enterprise Objects Framework, Mac OS X/Java, part of Apple WebObjects iBATIS, maintained by ASF, inactive as of 2021 Java Data Objects (JDO) Java Object Oriented Querying (jOOQ) DataNucleus, open source JDO and JPA implementation
7、 JPOX, open source JDO 2 reference implementation OpenJPA, Apache, open source, supports JPA API ORMLite, lightweight open source framework supporting JDBC and Android TopLink by Oracle QuickDB ORM, open source ORM framework (GNU LGPL) ObjectDBHibernate 優(yōu)勢(shì)是一個(gè)全自動(dòng) ORM 框架表構(gòu)造自動(dòng)生成流程自動(dòng)生成無(wú)縫切換 DataBase代碼零改動(dòng)
8、,僅更新部份配置文件即可。面向?qū)ο蟛僮? 更簡(jiǎn)單易用的 API如: save(obj), update(obj), delete(obj)Hibernate 開(kāi)展歷史2001Hibernate 1.02003Hibernate 2.0隨后參與 JBoss2005Hibernate 3.0Interceptor支持Annotation2021實(shí)現(xiàn)JPA2.0規(guī)范2021Hibernate 4.0multi-tenancyServiceRegistryHibernate 編程流程1. 配置 Hibernate 開(kāi)發(fā)環(huán)境2. 編寫實(shí)體類,配置 ORM3. 配置 hibernate.cfg.xml,
9、perties4. 調(diào)用 Hibernate API建立工程,導(dǎo)入hibernate jar包,數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包配置數(shù)據(jù)庫(kù)銜接信息,方言,實(shí)體類途徑實(shí)體類規(guī)范,ORM配置(注解或XML)下載 H/orm/緊縮包目錄構(gòu)造開(kāi)發(fā)手冊(cè)jar包源碼編寫實(shí)體類 規(guī)范實(shí)體類 = java bean規(guī)范 + 數(shù)據(jù)庫(kù)中有表與之對(duì)應(yīng) Java Bean 規(guī)范:假設(shè)干私有屬性一個(gè)空參構(gòu)造自動(dòng)產(chǎn)生的get和set方法Java Bean 在不同場(chǎng)所中,有不同的運(yùn)用,也能夠有不同的叫法。編寫實(shí)體類 例如getter & setter方法已省略實(shí)現(xiàn)Seriali
10、zable接口是可選的,但建議實(shí)體類都實(shí)現(xiàn)這個(gè)接口ORM 配置XML配置Annotation配置Entitypublic class Event private Long id;private String title;private Date date;IdGeneratedValuepublic Long getId() return id; private void setId(Long id) this.id = id;public Date getDate() return date;public void setDate(Date date) this.date = date;pu
11、blic String getTitle() return title;public void setTitle(String title) this.title = title;ORM配置信息,寫在一個(gè)XML文件中ORM配置信息,寫在實(shí)體類源代碼中XML vs Annotation 比較項(xiàng)XML配置Annotation配置誕生版本JDK 1.4JDK 1.5配置信息寫在一個(gè)外部的XML文件中寫在實(shí)體類源碼中編輯難度中等簡(jiǎn)單,自然編輯時(shí)間中等快捷可維護(hù)性中等,配置文件數(shù)與實(shí)體類數(shù),成正比,刪除實(shí)體類時(shí),需刪除對(duì)應(yīng)的XML簡(jiǎn)單,無(wú)需寫XML,直接刪除實(shí)體類即可改變配置修改XML,無(wú)需編譯修改類,
12、需重新編譯留意:1XML和Annotation,都是實(shí)現(xiàn)同一個(gè)目的的不同方式; 2上課演示Annotation的配置方式,XML配置方式請(qǐng)課后自學(xué),有問(wèn)題再提問(wèn)。Annotation簡(jiǎn)介Annotation(注解), 是Java5的新特性,提供一些本來(lái)不屬于程序的Metedata(元數(shù)據(jù)),寫在類名、屬性名或方法名上方,表示類名、屬性名或方法名具有 某種特性。比如:注解類型位置作用Deprecated類名、屬性名或方法名上方已過(guò)時(shí),不贊成使用。Override方法名上方方法重寫SuppressWarnings類名、屬性名或方法名上方抑制指定的警告信息Test單元測(cè)試方法上方能在JUnit下測(cè)試
13、運(yùn)行Hibernate 常用注解 - 1注解類型位置作用是否必須常用屬性Entity類名上方指定該類是實(shí)體類YES無(wú)Table類名上方指定該類對(duì)應(yīng)的表NOname:表名稱Id屬性的get方法上方屬性是主鍵屬性YES無(wú)Column自定義該屬性對(duì)應(yīng)的字段信息(包括字段名,字段長(zhǎng)度,字段約束等)NOname:字段名稱length:字段長(zhǎng)度unllable:非空約束unique:唯一約束GeneratedValue缺省情況下:簡(jiǎn)單主鍵策略(比如:自增或序列等)NOStrategy:主鍵策略Generator:生成器Hibernate 常用注解 - 2注解類型位置作用是否必須屬性Enumerated屬性
14、的get方法上方屬性是枚舉類型NOEnumType.ORDINAL,保存數(shù)字EnumType. STRING,保存字符串Transient屬性不要持久化NO無(wú)Temporal屬性是日期類型NOTemporalType. TIMESTAMP,格式: 年月日時(shí)分秒TemporalType.DATE,格式: 年月日TemporalType.TIME,格式: 時(shí)分秒注解配置例如 - 1指定User是實(shí)體類指定User對(duì)應(yīng)的表名是tbl_userid屬性是主鍵屬性簡(jiǎn)單主鍵戰(zhàn)略(自增或序列)定義name屬性對(duì)應(yīng)的字段名是u_name,長(zhǎng)度為30,非空約束注解配置例如 - 2定義枚舉類secret屬性,暫時(shí)
15、調(diào)用,不需求保管數(shù)據(jù)庫(kù)。定義各種屬性title屬性保管枚舉字符串birthDate屬性,以年月日格式保管注解運(yùn)用闡明實(shí)踐開(kāi)發(fā)時(shí),究竟用哪些注解?可以按照以下步驟:1先明確需求,一個(gè)對(duì)象有哪些屬性;2按實(shí)體類規(guī)范,寫java bean,聲明屬性;3按屬性的不同類型,再加上匹配的注解。Hibernate 主配置文件文件名: hibernate.cfg.xml (默許名,商定俗稱) 可以更改稱號(hào)位置: src根目錄下Hibernate 配置信息Java ApplicationHibernateORMData Base數(shù)據(jù)庫(kù)銜接信息driver,url,username,password屬性(如:方言
16、,顯示sql,生成表等)ORM 配置以上信息都可以配置在hibernate主配置文件中Java applicationDataSource 數(shù)據(jù)源DataSourceData BaseConnection 1Connection 2Connection PoolConnection 1Connection 2Connection NDataSource 可被看成是一個(gè)創(chuàng)建和維護(hù) Connection 的工廠被占用被占用DataSource 數(shù)據(jù)源-2Hibernate 內(nèi)建的數(shù)據(jù)源無(wú)法用于產(chǎn)品用途可以運(yùn)用 c3p0 數(shù)據(jù)源進(jìn)展交換! 步驟如下:1參與hibernate-c3p0-*.jar、c
17、3p0-*.jar 這兩個(gè)jar包;2 ernal.C3P0ConnectionProvider 5 20 300 50 3000Dialect 方言HibernateORMMySQL 方言O(shè)racle 方言SQLServer 方言MySQL 方言O(shè)racle 方言SQLServer 方言需求銜接哪個(gè)數(shù)據(jù)庫(kù),就選擇該數(shù)據(jù)庫(kù)的方言例如代碼dtd不需求背,從project/etc文件夾下的模板中拷貝即可自動(dòng)產(chǎn)生table顯示SQL語(yǔ)句Log4J 簡(jiǎn)介L(zhǎng)og4j是 的一個(gè)開(kāi)源工程,經(jīng)過(guò)運(yùn)用Log4j,我們可以做到以下效果:1自定義日志信息保送的目的地是控制
18、臺(tái)、文件、Email等各種方式;2靈敏控制每一條日志的輸出格式;3經(jīng)過(guò)定義每一條日志信息的級(jí)別,我們可以更加細(xì)致地控制日志的生成 過(guò)程,而不需求修正運(yùn)用的代碼。被廣泛運(yùn)用在各種框架工程中,包括SSH.定義以下級(jí)別: debug info warn error fatal越接近左側(cè),輸出信息越多(詳細(xì)); 越接近右側(cè),輸出信息越少(僅出錯(cuò)時(shí)輸出)命名:商定俗稱就是perties位置:放在工程src根目錄下perties 例如#define log level and output type.log4j.rootLogger=info, console# dir
19、ect log messages to stdout #log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target=System.outlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=%dABSOLUTE %5p %c1:%L - %m%n框架類工程中都會(huì)運(yùn)用log4j,此文件編輯后普通不再更改.Hibernate AP
20、I 3.xConfigurationSessionFactorySessionTransactionQueryCriteriaHibernate的主配置信息,擔(dān)任解析 hibernate.cfg.xmlSession工廠類,用于創(chuàng)建session等同于數(shù)據(jù)庫(kù)銜接,添加緩存機(jī)制事務(wù)控制對(duì)象,用于提交或回滾事務(wù)基于 HQL 的查詢基于約束條件的查詢Configuration該對(duì)象的目的,就是初始化一個(gè)具備一切配置信息的對(duì)象。通??梢杂幸韵聝煞N途徑:經(jīng)過(guò)解析 src 根目錄下的 hibernate.cfg.xml 來(lái)實(shí)現(xiàn);(引薦運(yùn)用)經(jīng)過(guò)代碼手動(dòng)配置。XMLConfigurationSessionF
21、actory 關(guān)系表示圖ConfigurationSessionFactoryDataBaseTransactionTransaction內(nèi)存空間SessionSessionSessionTransactionHibernate API 4.xServiceRegistryConfigurationSessionFactorySessionTransactionQueryCriteria4.X 效力注冊(cè)類,用于注冊(cè)各項(xiàng)效力ServiceRegistry在較早版本的hibernate中已有的各種功能,在4.x版本中抽成Service。目的是為了使得工程構(gòu)造更符合SOA(面向效力架構(gòu))的設(shè)計(jì)要求。
22、SessionFactory 例如代碼v3.xv4.x代碼演示Session API面向關(guān)系面向?qū)ο箢惐韺傩宰侄斡涗泴?duì)象實(shí)例運(yùn)轉(zhuǎn)機(jī)制在開(kāi)發(fā)時(shí),程序員專注于面向?qū)ο缶幊蹋辉谶\(yùn)轉(zhuǎn)時(shí),Hibernate 自動(dòng)將CRUD操作翻譯成相應(yīng)的 SQL 并執(zhí)行。映射備注 - 1關(guān)于sql表名,字段名,保管字問(wèn)題:假照實(shí)體類的類名,屬性名中,出現(xiàn)sql保管字:order,desc,table.可以運(yùn)用Table自定義表名; Column自定義字段名的方式來(lái)處理.關(guān)于字段約束的unique獨(dú)一性無(wú)效的問(wèn)題.緣由:SessionFactory在初始化時(shí),會(huì)檢查hibernate.hbm2ddl.auto屬性,并自動(dòng)
23、產(chǎn)生表.但此功能有缺損,無(wú)法產(chǎn)生獨(dú)一性約束.處理方法:運(yùn)用Hibernate的SchmaExport工具類.備注 - 2GeneratedValue可以自定義主鍵生成戰(zhàn)略.在Oracle數(shù)據(jù)庫(kù)中,主鍵戰(zhàn)略是序列.但是默許情況下,是共享同一個(gè)序列: hibernate_sequence處理方案: 可以為每張表定義一個(gè)公用的序列.備注 - 3Get 和 Load 的區(qū)別:前往類型get()方法假設(shè)查詢不到對(duì)象實(shí)例,前往null;load()方式假定對(duì)象實(shí)例一定存在,因此查詢不到時(shí)會(huì)拋出異常。org.hibernate.ObjectNotFoundException對(duì)象本身屬性load()方法延遲加載對(duì)象本身屬性,待運(yùn)用屬性時(shí)再運(yùn)轉(zhuǎn)sql語(yǔ)句;get()方法一次性查詢對(duì)象本身屬性,直接運(yùn)轉(zhuǎn)sql語(yǔ)句。備注 - 4目前只能對(duì)單個(gè)實(shí)體類的進(jìn)展操作,假設(shè)要實(shí)現(xiàn)1:1, 1:N, N:N, 需求學(xué)習(xí)完第三章對(duì)象間關(guān)聯(lián)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 14保護(hù)呼吸器官(說(shuō)課稿)-2024-2025學(xué)年科學(xué)三年級(jí)上冊(cè)人教鄂教版
- 1 多種多樣的食物 說(shuō)課稿 -2023-2024學(xué)年科學(xué)三年級(jí)上冊(cè)人教鄂教版
- 2024年高中語(yǔ)文 第7課 李商隱詩(shī)兩首說(shuō)課稿5 新人教版必修3001
- 2024秋一年級(jí)道德與法治上冊(cè) 第2課 拉拉手 交朋友說(shuō)課稿 新人教版
- 2024-2025學(xué)年高中英語(yǔ)上學(xué)期第17周 省略句說(shuō)課稿
- 2025年度醫(yī)療信息化安全保障與應(yīng)急響應(yīng)合同
- 4《買東西的學(xué)問(wèn)-學(xué)會(huì)看包裝》(說(shuō)課稿)統(tǒng)編版道德與法治四年級(jí)下冊(cè)
- 歌舞廳娛樂(lè)服務(wù)項(xiàng)目融資渠道探索
- 2024春七年級(jí)語(yǔ)文下冊(cè) 第5單元 20外國(guó)詩(shī)二首說(shuō)課稿 新人教版
- 水泥池養(yǎng)殖場(chǎng)出租合同(2篇)
- 中國(guó)儲(chǔ)備糧管理集團(tuán)有限公司蘭州分公司招聘筆試真題2024
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級(jí)歷史下冊(cè)
- 提高金剛砂地坪施工一次合格率
- 【歷史】唐朝建立與“貞觀之治”課件-2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 產(chǎn)業(yè)園區(qū)招商合作協(xié)議書
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 2025新譯林版英語(yǔ)七年級(jí)下單詞默寫表
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊(cè)
- 天然氣脫硫完整版本
- 中歐班列課件
- 2025屆高三數(shù)學(xué)一輪復(fù)習(xí)備考經(jīng)驗(yàn)交流
評(píng)論
0/150
提交評(píng)論