傳智播客Hibernate(精)_第1頁
傳智播客Hibernate(精)_第2頁
免費預(yù)覽已結(jié)束,剩余35頁可下載查看

下載本文檔

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

文檔簡介

1、北京傳智播客教17 C傳智播客 一髙級軟件人才賣作培訓(xùn)專家!、Hibernate入門案例Customer彳BusinessService棗Hibernate-4- 1- Hibermate API對象關(guān)系型映射!Hibern a 2 配置文件C傳智播客 一髙級軟件人才賣作培訓(xùn)專家!、Hibernate入門創(chuàng)建配置文件hibernate.dialect=net.sf.hibemate.dialect.OracleDialecthibernate.co nn ection.driver_class=oracle.jdbc.driver.OracleDriverhibernate.c onn ect

2、io nurl=jdbc:oracle:thin:peopres/peopres127001: 1521 :oracle9hibernate.c onn ecti on .username=peopreshibernate.co nn ecti on .password=peopres關(guān)系數(shù)據(jù)庫;Customers北京傳和播客教仃北京傳智播客教仃hibernate.show_sql=true北京傳智播客教仃C傳智播客 一7T級軟件人才實作培訓(xùn)專家!Hibernate入門創(chuàng)建持久化類public class Customer implements Serializable private sta

3、tic final long serialVersionUID = 5431991012351413505L;private Long Id;private String name;private String email;北京傳智播客教|7 C傳智播客一7T級軟件人才實作培訓(xùn)專家Hibernate入門創(chuàng)建數(shù)據(jù)庫drop database if exists SAMPLEDB; create database SAMPLEDB; use SAMPLEDB;create table CUSTOMERS ( ID bigint not null primary keyrNAME varchar(1

4、5) not null, EMAILvarchar(128) not null, PASSWORD varchar(8) not null, PHONE intrADDRESS varchar(255), SEX char(l),IS_MARRIED bit, DESCRIPTION text, IMAGE blob,BIRTHDAY date, REGISTERED_TIME timestamp); 一北京傳智播客教I? C傳智播客 一高級軟件人才賣作培訓(xùn)專家!、Hibernate入門創(chuàng)建對象-關(guān)系映射文件C傳智播客 一高級軟件人才賣作培訓(xùn)專家!、Hibernate入門把customer持久

5、化類映射至customers衣:類和表的映射vid:持久化類的 OID 和表主鍵映射 v!id1.遜 北京傳智播客教仃傳智播客北京傳智播客教I? Hibernate入門 java hibernate sql類型對應(yīng)關(guān)系北京傳智播客教I? Hibernate入門通過API操作數(shù)據(jù)庫*保存用廣對致*dpnram custoxetr*iBthrava Except ion*AUthor xupc Z006-7-31public void saveCuBtowec(Custoroer customer) throw Excepeion (Seiss ion iseiss ion - isess lan

6、Faecory. opeaSesssaon O : Transaccion tx - mum;Customer類屈 性javahibernateCutomers?段名Sql類型Namejava.lan g.StringstringNAMEVarchar(15)PhoneintintPHONEINTSexcharcharacterSEXCHAR(1)Marriedbooleanboolea nIS MARRIEDBITDescriptionjava.la ng.StringtextDESCRIPTIONCLOBimagebyteQbinaryIMAGEBLOBbirthdayjava.sql.

7、DatedateBIRTHDAYDATEregisteredTimejava.sql.TimeStamptimestampREGISTERED_TIM ETIMESTAMPJ7c傳智傳智播客北京傳智播客教I? try (tx session.buqMnTxzcnDcct :Loa;sens ion eavu (uu3匕oivui:):tx cowwlt (I :catch (Exception el ( tt (tx - nul_Ll ( cx rolltoack(I;throw e;f lnalJLy (session c:*od ;北京傳智播客教仃Hibernate入門通過 API 操作數(shù)

8、據(jù)庫降所有的春戶記錄 throws Except ion*xspu OOC *? O 1public void de leLcAl lCuscomsrs (I throws Except ion fSession sston sasslonFactory openSesalonQ ; Trunanction tx = nul1;try tx - numioa.bugiiVTucucucaon (); session.delwce (Errom Cuscoxrer as c*); ux.coramlt ():catch (Except ion e) (1C (tx - null)(tx ro1l

9、back();throw e;xjalXy (session亡1033() i北京傳智播客教仃C傳智播客 一TT級軟件人才實作培訓(xùn)專家!、HibernateAl3Hibernate初始化xs/會話工廠 public static SessionFactory sesslonFactory;17/初豬化static (r oiX硏try (20Configuration coniig = new Configuraclon();21conf ig.addClbss (Custowr;229QsessionFactory = config bui丄dSESsicmFactoiry ();1241c

10、atch (Exception e) 2Se printSt-ackTrace(|;2G27)廠傳22北京傳智播客教I? 1、創(chuàng)建 configuration 對探,把 perties 文竹:讀入內(nèi)心。2、add ()把映射文件讀入內(nèi)存3、buildSessionFactory ()數(shù)據(jù)源。重塑級對彖。北京傳智播客教仃C傳智播客 一高級軟件人才賣作培訓(xùn)專家!、Hibernate入門 Hibernate初始化 訪問Session接 口savc() update() delete() load()find()Session session sess ionF actory

11、 openSession0 ; Transact Ion tx = mxl_L;try oria lVorslonUID 83S9774207292 53 6830L;2private Long丄a:1private Spring orderNunrijer;private douh1e prico:private Cuconr cuscotnct:-Order - CustomerJI 關(guān)聯(lián)可分為一對一、一對多和多對多。還町分為單項關(guān)聯(lián)和雙向關(guān)聯(lián) 3 丿北京傳智播客教I? 北京傳智播客教仃丿北京傳智播客教仃C傳智摘客 一髙級軟件人才實作培訓(xùn)專家!、Java對象持久化概述軟件模型域?qū)ο箝g的關(guān)系

12、3聚集(Aggregation):整休與部分的關(guān)系例人與的 關(guān)系。部分奨的對象不能單獨心在,他的生命周期依賴 于整體類的對彖的牛命周期,整體消失時,部分也隨 Z 消失。6public class Person |I7private Set hands =new HashSe 匸();3北京傳智播客教仃C傳智摘客 一髙級軟件人才實作培訓(xùn)專家!、Java對象持久化概述軟件模型域?qū)ο箝g的關(guān)系4一般化(Generalization):類 Z 間繼承關(guān)系。、_C傳智播客 一禹級軟件人才賣作培訓(xùn)專家!、Java對象持久化概述軟件模型域?qū)ο蟮某志没拍顚嵭萦驅(qū)﹀柙趦?nèi)存屮創(chuàng)建后,不能永久存在。將實休域 對象永

13、久保存起來,就是持久化的過程。通常只冇實體 域?qū)﹀栊枰志秘?過禪域?qū)﹀韬褪录缹﹀枰话悴恍?要持久化。廣義打久化旨增.刪、改.So內(nèi)存Customer 對彖北京傳智播客教仃持久化數(shù)據(jù)orde對象車新加戲到內(nèi)存丿C傳智北京傳智播客教17 Java對象持久化概述 ORM 簡介 ORM 中間件的使用方法采用元數(shù)據(jù)來描述対象關(guān)系映射細(xì)節(jié),元數(shù)據(jù)通常采用 xml 格 式,并存放在專門的對彖關(guān)系映射文件屮。只要配置了持久 化類與表的映射關(guān)系,orm 中間件在運行時就能夠參照映射 文件的信息,把域?qū)濆璩志没綌?shù)據(jù)庫屮。public void deleteCustomer(Customer c)Sessio

14、n session = getSession(); session.delete(c);執(zhí)行步驟如卜:1運川反射機制.獲得Customer對餃的Customer.class類。2參照映射文件得到Customer類對應(yīng)的衣的倍息.以及和Customer類關(guān)聯(lián)的類以及 相應(yīng)的農(nóng)倍息3根據(jù)以上倍息生成SQL語句.4調(diào)用hibernate API.執(zhí)行該語句。北京傳智播客教I?丿北京傳智播客教仃C傳智播客一 k 級軟件人才實作培訓(xùn)專家Java對象持久化概述 Hibernate API簡介Hibernate對JDBC做了輕量級的封裝所謂輕量級是 指Hibernate并沒有完全封裝JDBC, java應(yīng)用

15、既可以 通過HibemateAPI來訪問數(shù)據(jù)庫,還可直接通過JDBC API訪問數(shù)據(jù)庫。北京傳智播客教仃C傳智播客一髙級軟件人才實作培訓(xùn)專家Java對象持久化概述 Hibernate API 簡介 Hibernate 核心接口1 .Configuration fii! Shi be mate,根啟動 hibernate,創(chuàng)建 sessionFactory 對象。2.SessionFactory 初始化 hibernate.充勺數(shù)據(jù)源代理,創(chuàng)建 session對彖。線程安全的,可被多個線程共享。重量級的, 需要個很大的緩存,用于存放于圮義的 sql 語句和映射元數(shù) 據(jù)等。用戶還町為它配置一個緩存

16、插件,稱為二級緩存。3.Session 使用垠廣泛,也被稱為持久化管理器,它提供和持久 化和關(guān)的操作。增、刪、改、查等。不是線程安全的,避免多 個線程共亨。輕屋級的,創(chuàng)建和銷毀不需要消耗太多資源。Session 中有一個緩存,稱為一級緩存。存放當(dāng)前匸作單元加丿 載的對彖。北京傳智播客教仃丿丿北京傳智播客教仃Java對象持久化概述 Hibernate API簡介Hibernate核心接口 (續(xù))4.Transaction hibernate數(shù)擁庫事務(wù)接口, 它對底層的事務(wù)接口作了封裝底層事務(wù)接 口包括:JDBC APIJTA(java Transaction API)CORBA(common o

17、bject request Broker architecture)_丿北京傳智播客教|7 Java對象持久化概述 Hibernate API簡介 Hibernate 核心接口 (續(xù))5.Query 和 Criteria 接口 :都是查詢接口,query 實例 包裝了 HQL 查詢語句,hql 是面向?qū)ο蟮?,他引用?名及類的屬性名,而不是表名和字段名。Criteria 接 口完全封裝了基于字符申形式的查詢語句,比query 接口更面向?qū)﹀?,他擅長執(zhí)行動態(tài)查詢。 sessoin 接口的 find方法也具有數(shù)據(jù)查詢功能,但他 只是執(zhí)行些簡單的 hql 查詢語句的快捷方式,遠(yuǎn)沒 有 query 接

18、口功能強大。c傳智髙級軟件人才實作培訓(xùn)專審!北京傳智播客教仃c傳智播客一高級軟件人才實作培訓(xùn)專家Java對象持久化概述 Hibernate API簡介 Hibernate 映射類型接口1 .PrivateType:映射 java 基木數(shù)據(jù)類型, 包括 ByteType、 ShortType、Intege 訂 ype、LongType、 FloatType、 DoubleType、CharactorTypeBooleanTypeo2. DateType:映射 java 日期類曲。3. BinaryType:映矗寸 Byte類型。Query.setParameter(name,7,name,/zH

19、ibemate. STRING)_ _丿北京傳智播客教仃C傳智播客一高級軟件人才實作培訓(xùn)專家Java對象持久化概述 Hibernate API簡介可供擴展的接口hibernated供的多數(shù)功能是可配置的,允許用 戶選擇適當(dāng)?shù)膬?nèi)置策略。如可配置如下數(shù)據(jù)庫 方言:hibernate.dialect=net.sf.hibernate.dialect.MySQLDialecthibernate.dialect=net.sf.hibernate.dialect.OracleDialecthibernate.dialect=n et.sf.hibernate.dialect.SybaseDialect北京

20、傳智播客教仃Java對象持久化概述 Hibernate API簡介可供擴展的接口如來hibernate內(nèi)置的策略不能滿足需求時,允許用戶自定義實現(xiàn)接口或擴展特定的類。Hibernate的擴農(nóng)點包括:主鍵生成策略:IdentifierGeneratorsql方言:Dialect抽象類 緩存機制:cache和cacheprovider接 口jdbc連接管理器:connectionprovider等北京傳智播客教仃廠傳智播客一高級軟件人才賣作培訓(xùn)專家Java對象持久化概述小結(jié)表現(xiàn)層業(yè)務(wù)邏輯層實體域?qū)﹀柽^程域?qū)﹀瑁I(yè)務(wù)數(shù)據(jù))(業(yè)務(wù)邏輯)持久化層(orm 中間件.負(fù)責(zé)封裝數(shù)據(jù)訪問細(xì)節(jié))數(shù)據(jù)庫層廠傳北京傳

21、智播客教仃C傳智播客 一髙級軟件人才賣作培訓(xùn)專家!、對象關(guān)系映射基礎(chǔ)本章解決的問題1持久化類沒有g(shù)etXXX和setXXX方法。2持久化類的屬性在庫中沒有對應(yīng)的字段, 或 字段沒有對應(yīng)的屬性3控制hibernate的insert、update語句。4設(shè)置從持久化類映射到數(shù)據(jù)庫表,以及持久化類的屬性映射到數(shù)據(jù)庫表的字段的命名策廠 傳智播客 一7T級軟件人才賣作培訓(xùn)專家!、對象關(guān)系映射基礎(chǔ)持久化類的屬性及訪問方法Hibernate 中持久化類的訪問者有兩個:1 .Java 應(yīng)用程序2.hibernate(何時調(diào)用 get、set 方法?)Customer對彖-用戶 界面Java 應(yīng)用程序getXX

22、X()方法setXXX()方法hibernate數(shù)據(jù)庫-北京傳智播客教仃北京傳智播客教仃Java 應(yīng)用程序不能訪問持久化類的 private 方法,fohibematG 沒有這 個限制,它町以訪問各種級別的方法。丿北京傳智播客教仃c傳智播客一級軟件人才夾作培訓(xùn)專家對彖關(guān)系映射基礎(chǔ)持久化類的屬性及訪問方法基本數(shù)據(jù)類型和包裝類型基本數(shù)據(jù)類型和包裝類型對應(yīng)的hibernate映射 類型相同?;绢悤A町直接運算、無法表達 null、數(shù) 7 類空的默認(rèn)值為 0。 包裝類默認(rèn)值是 null。為對于狄認(rèn)值仃業(yè)務(wù)息義的時候需要便用包裝類。V_丿北京傳智播客教仃C傳智播客一髙級軟件人才夾作培訓(xùn)專家!、對象關(guān)系映

23、射基礎(chǔ)持久化類的屬性及訪問方法 Hibernate 訪問持久化類屈性的策略1 .propertye 默認(rèn)值:衣明 hibernate 通過 getXXX 和 setXXX 來訪問類屬性。推薦使用。捉高域模型透明性。2.field:hibernate 通過 java 反射機制直接訪問類屬性。對丁沒有 javabean 方法的屬社門 J 設(shè)置該訪問策略。除了 設(shè)置property屬性的access為field和propertyZ外 還可以自定義訪問策略, 需要創(chuàng)建實現(xiàn)net.sf.hibernate, property. PropertyAccessor接 口 的類。( 傳智C傳智播客 一高級軟件

24、人才賣作培訓(xùn)專家!、對象關(guān)系映射基礎(chǔ)持久化類的屬性及訪問方法在持久化類的方法中加入程序邏輯class Customerprivate String first name ; private String lastname ; public String getName()return firstname + + lastname ;public void setName(String name)StringTokenizer t = new StringTokenizer(name); firstname = t.nextToke n(); lastname =t.n extToken();北

25、京代智播客教I? 丿北京傳智播客教|7 c傳智播客一髙級軟件人才賣作培訓(xùn)專家對彖關(guān)系映射基礎(chǔ)持久化類的屬性及訪問方法在持久化類的方法屮加入程序邏輯不管在類中是否存在name屬性,只要在Customer.hbm.xml文件中映射 了name屬性, 在hql語句中就能訪問施o| Session.findCfrom customer as c where =tom)如果改成:后過如何?_丿北京傳智播客教|7 C傳智播客 一高級軟件人才夾作培訓(xùn)專家!、對象關(guān)系映射基礎(chǔ)持久化類的屬性及訪問方法設(shè)置派生屬性利用7C 索的 formula 屬性,用來設(shè)置一個 sql 表達武, hibernate

26、 將根據(jù)它來計算出派生屈性的值。丿北京傳智播客教|7 對彖關(guān)系映射基礎(chǔ)持久化類的屬性及訪問方法控制 insert、update 語句C傳智播客 一7T級軟件人才夾作培訓(xùn)專家!、對象關(guān)系映射基礎(chǔ)處理sql引用表示符在 SQL 語法中,農(nóng)示符是指用 F 為數(shù)據(jù)庫農(nóng)、視圖、字段 或索引等名字的字符串,常規(guī)表示梓不包括簾格,也不包 含特殊字符,內(nèi)此無需使川弓川符號。如只數(shù)據(jù)庫表名或 列名包含特殊字符,可以使用口用表示符。廠傳映射屈性作用cpropercy insert屈性若為raise, fEinsertUrfiJ屮不包舍垓丫段.孩了段水遠(yuǎn)不健被倆入。 狀認(rèn)值true。 update屬性 若為false, update語句不包含該字段.該字段永遠(yuǎn)不能被更新。歡認(rèn) 值為ue。 mutableW性若為false*簣價十所Tj Jproperty7CJ的update屈性為false整個實例不能被更新。默認(rèn)為truaodynamic-insertW性等價J所仃的propm:y尤索的dynarnic-inse

溫馨提示

  • 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

提交評論