

下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、北京傳智播客教17 C傳智播客 一髙級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家!、Hibernate入門(mén)案例Customer彳BusinessService棗Hibernate-4- 1- Hibermate API對(duì)象關(guān)系型映射!Hibern a 2 配置文件C傳智播客 一髙級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家!、Hibernate入門(mén)創(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ù)庫(kù);Customers北京傳和播客教仃北京傳智播客教仃hibernate.show_sql=true北京傳智播客教仃C傳智播客 一7T級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家!Hibernate入門(mén)創(chuàng)建持久化類(lèi)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級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家Hibernate入門(mén)創(chuàng)建數(shù)據(jù)庫(kù)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傳智播客 一高級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家!、Hibernate入門(mén)創(chuàng)建對(duì)象-關(guān)系映射文件C傳智播客 一高級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家!、Hibernate入門(mén)把customer持久
5、化類(lèi)映射至customers衣:類(lèi)和表的映射vid:持久化類(lèi)的 OID 和表主鍵映射 v!id1.遜 北京傳智播客教仃傳智播客北京傳智播客教I? Hibernate入門(mén) java hibernate sql類(lèi)型對(duì)應(yīng)關(guān)系北京傳智播客教I? Hibernate入門(mén)通過(guò)API操作數(shù)據(jù)庫(kù)*保存用廣對(duì)致*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類(lèi)屈 性javahibernateCutomers?段名Sql類(lèi)型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入門(mén)通過(guò) API 操作數(shù)
8、據(jù)庫(kù)降所有的春戶記錄 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級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家!、HibernateAl3Hibernate初始化xs/會(huì)話工廠 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 對(duì)探,把 perties 文竹:讀入內(nèi)心。2、add ()把映射文件讀入內(nèi)存3、buildSessionFactory ()數(shù)據(jù)源。重塑級(jí)對(duì)彖。北京傳智播客教仃C傳智播客 一高級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家!、Hibernate入門(mén) Hibernate初始化 訪問(wèn)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)可分為一對(duì)一、一對(duì)多和多對(duì)多。還町分為單項(xiàng)關(guān)聯(lián)和雙向關(guān)聯(lián) 3 丿北京傳智播客教I? 北京傳智播客教仃丿北京傳智播客教仃C傳智摘客 一髙級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家!、Java對(duì)象持久化概述軟件模型域?qū)ο箝g的關(guān)系
12、3聚集(Aggregation):整休與部分的關(guān)系例人與的 關(guān)系。部分奨的對(duì)象不能單獨(dú)心在,他的生命周期依賴(lài) 于整體類(lèi)的對(duì)彖的牛命周期,整體消失時(shí),部分也隨 Z 消失。6public class Person |I7private Set hands =new HashSe 匸();3北京傳智播客教仃C傳智摘客 一髙級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家!、Java對(duì)象持久化概述軟件模型域?qū)ο箝g的關(guān)系4一般化(Generalization):類(lèi) Z 間繼承關(guān)系。、_C傳智播客 一禹級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家!、Java對(duì)象持久化概述軟件模型域?qū)ο蟮某志没拍顚?shí)休域?qū)﹀柙趦?nèi)存屮創(chuàng)建后,不能永久存在。將實(shí)休域 對(duì)象永
13、久保存起來(lái),就是持久化的過(guò)程。通常只冇實(shí)體 域?qū)﹀栊枰志秘?過(guò)禪域?qū)﹀韬褪录缹?duì)彖一般不需 要持久化。廣義打久化旨增.刪、改.So內(nèi)存Customer 對(duì)彖北京傳智播客教仃持久化數(shù)據(jù)orde對(duì)象車(chē)新加戲到內(nèi)存丿C傳智北京傳智播客教17 Java對(duì)象持久化概述 ORM 簡(jiǎn)介 ORM 中間件的使用方法采用元數(shù)據(jù)來(lái)描述対象關(guān)系映射細(xì)節(jié),元數(shù)據(jù)通常采用 xml 格 式,并存放在專(zhuān)門(mén)的對(duì)彖關(guān)系映射文件屮。只要配置了持久 化類(lèi)與表的映射關(guān)系,orm 中間件在運(yùn)行時(shí)就能夠參照映射 文件的信息,把域?qū)濆璩志没綌?shù)據(jù)庫(kù)屮。public void deleteCustomer(Customer c)Sessio
14、n session = getSession(); session.delete(c);執(zhí)行步驟如卜:1運(yùn)川反射機(jī)制.獲得Customer對(duì)餃的Customer.class類(lèi)。2參照映射文件得到Customer類(lèi)對(duì)應(yīng)的衣的倍息.以及和Customer類(lèi)關(guān)聯(lián)的類(lèi)以及 相應(yīng)的農(nóng)倍息3根據(jù)以上倍息生成SQL語(yǔ)句.4調(diào)用hibernate API.執(zhí)行該語(yǔ)句。北京傳智播客教I?丿北京傳智播客教仃C傳智播客一 k 級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家Java對(duì)象持久化概述 Hibernate API簡(jiǎn)介Hibernate對(duì)JDBC做了輕量級(jí)的封裝所謂輕量級(jí)是 指Hibernate并沒(méi)有完全封裝JDBC, java應(yīng)用
15、既可以 通過(guò)HibemateAPI來(lái)訪問(wèn)數(shù)據(jù)庫(kù),還可直接通過(guò)JDBC API訪問(wèn)數(shù)據(jù)庫(kù)。北京傳智播客教仃C傳智播客一髙級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家Java對(duì)象持久化概述 Hibernate API 簡(jiǎn)介 Hibernate 核心接口1 .Configuration fii! Shi be mate,根啟動(dòng) hibernate,創(chuàng)建 sessionFactory 對(duì)象。2.SessionFactory 初始化 hibernate.充勺數(shù)據(jù)源代理,創(chuàng)建 session對(duì)彖。線程安全的,可被多個(gè)線程共享。重量級(jí)的, 需要個(gè)很大的緩存,用于存放于圮義的 sql 語(yǔ)句和映射元數(shù) 據(jù)等。用戶還町為它配置一個(gè)緩存
16、插件,稱(chēng)為二級(jí)緩存。3.Session 使用垠廣泛,也被稱(chēng)為持久化管理器,它提供和持久 化和關(guān)的操作。增、刪、改、查等。不是線程安全的,避免多 個(gè)線程共亨。輕屋級(jí)的,創(chuàng)建和銷(xiāo)毀不需要消耗太多資源。Session 中有一個(gè)緩存,稱(chēng)為一級(jí)緩存。存放當(dāng)前匸作單元加丿 載的對(duì)彖。北京傳智播客教仃丿丿北京傳智播客教仃Java對(duì)象持久化概述 Hibernate API簡(jiǎn)介Hibernate核心接口 (續(xù))4.Transaction hibernate數(shù)擁庫(kù)事務(wù)接口, 它對(duì)底層的事務(wù)接口作了封裝底層事務(wù)接 口包括:JDBC APIJTA(java Transaction API)CORBA(common o
17、bject request Broker architecture)_丿北京傳智播客教|7 Java對(duì)象持久化概述 Hibernate API簡(jiǎn)介 Hibernate 核心接口 (續(xù))5.Query 和 Criteria 接口 :都是查詢(xún)接口,query 實(shí)例 包裝了 HQL 查詢(xún)語(yǔ)句,hql 是面向?qū)ο蟮?,他引用?lèi) 名及類(lèi)的屬性名,而不是表名和字段名。Criteria 接 口完全封裝了基于字符申形式的查詢(xún)語(yǔ)句,比query 接口更面向?qū)﹀瑁瞄L(zhǎng)執(zhí)行動(dòng)態(tài)查詢(xún)。 sessoin 接口的 find方法也具有數(shù)據(jù)查詢(xún)功能,但他 只是執(zhí)行些簡(jiǎn)單的 hql 查詢(xún)語(yǔ)句的快捷方式,遠(yuǎn)沒(méi) 有 query 接
18、口功能強(qiáng)大。c傳智髙級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)審!北京傳智播客教仃c傳智播客一高級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家Java對(duì)象持久化概述 Hibernate API簡(jiǎn)介 Hibernate 映射類(lèi)型接口1 .PrivateType:映射 java 基木數(shù)據(jù)類(lèi)型, 包括 ByteType、 ShortType、Intege 訂 ype、LongType、 FloatType、 DoubleType、CharactorTypeBooleanTypeo2. DateType:映射 java 日期類(lèi)曲。3. BinaryType:映矗寸 Byte類(lèi)型。Query.setParameter(name,7,name,/zH
19、ibemate. STRING)_ _丿北京傳智播客教仃C傳智播客一高級(jí)軟件人才實(shí)作培訓(xùn)專(zhuān)家Java對(duì)象持久化概述 Hibernate API簡(jiǎn)介可供擴(kuò)展的接口hibernated供的多數(shù)功能是可配置的,允許用 戶選擇適當(dāng)?shù)膬?nèi)置策略。如可配置如下數(shù)據(jù)庫(kù) 方言:hibernate.dialect=net.sf.hibernate.dialect.MySQLDialecthibernate.dialect=net.sf.hibernate.dialect.OracleDialecthibernate.dialect=n et.sf.hibernate.dialect.SybaseDialect北京
20、傳智播客教仃Java對(duì)象持久化概述 Hibernate API簡(jiǎn)介可供擴(kuò)展的接口如來(lái)hibernate內(nèi)置的策略不能滿足需求時(shí),允許用戶自定義實(shí)現(xiàn)接口或擴(kuò)展特定的類(lèi)。Hibernate的擴(kuò)農(nóng)點(diǎn)包括:主鍵生成策略:IdentifierGeneratorsql方言:Dialect抽象類(lèi) 緩存機(jī)制:cache和cacheprovider接 口jdbc連接管理器:connectionprovider等北京傳智播客教仃廠傳智播客一高級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家Java對(duì)象持久化概述小結(jié)表現(xiàn)層業(yè)務(wù)邏輯層實(shí)體域?qū)﹀柽^(guò)程域?qū)﹀瑁I(yè)務(wù)數(shù)據(jù))(業(yè)務(wù)邏輯)持久化層(orm 中間件.負(fù)責(zé)封裝數(shù)據(jù)訪問(wèn)細(xì)節(jié))數(shù)據(jù)庫(kù)層廠傳北京傳
21、智播客教仃C傳智播客 一髙級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家!、對(duì)象關(guān)系映射基礎(chǔ)本章解決的問(wèn)題1持久化類(lèi)沒(méi)有g(shù)etXXX和setXXX方法。2持久化類(lèi)的屬性在庫(kù)中沒(méi)有對(duì)應(yīng)的字段, 或 字段沒(méi)有對(duì)應(yīng)的屬性3控制hibernate的insert、update語(yǔ)句。4設(shè)置從持久化類(lèi)映射到數(shù)據(jù)庫(kù)表,以及持久化類(lèi)的屬性映射到數(shù)據(jù)庫(kù)表的字段的命名策廠 傳智播客 一7T級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家!、對(duì)象關(guān)系映射基礎(chǔ)持久化類(lèi)的屬性及訪問(wèn)方法Hibernate 中持久化類(lèi)的訪問(wèn)者有兩個(gè):1 .Java 應(yīng)用程序2.hibernate(何時(shí)調(diào)用 get、set 方法?)Customer對(duì)彖-用戶 界面Java 應(yīng)用程序getXX
22、X()方法setXXX()方法hibernate數(shù)據(jù)庫(kù)-北京傳智播客教仃北京傳智播客教仃Java 應(yīng)用程序不能訪問(wèn)持久化類(lèi)的 private 方法,fohibematG 沒(méi)有這 個(gè)限制,它町以訪問(wèn)各種級(jí)別的方法。丿北京傳智播客教仃c傳智播客一級(jí)軟件人才夾作培訓(xùn)專(zhuān)家對(duì)彖關(guān)系映射基礎(chǔ)持久化類(lèi)的屬性及訪問(wèn)方法基本數(shù)據(jù)類(lèi)型和包裝類(lèi)型基本數(shù)據(jù)類(lèi)型和包裝類(lèi)型對(duì)應(yīng)的hibernate映射 類(lèi)型相同?;绢?lèi)旳町直接運(yùn)算、無(wú)法表達(dá) null、數(shù) 7 類(lèi)空的默認(rèn)值為 0。 包裝類(lèi)默認(rèn)值是 null。為對(duì)于狄認(rèn)值仃業(yè)務(wù)息義的時(shí)候需要便用包裝類(lèi)。V_丿北京傳智播客教仃C傳智播客一髙級(jí)軟件人才夾作培訓(xùn)專(zhuān)家!、對(duì)象關(guān)系映
23、射基礎(chǔ)持久化類(lèi)的屬性及訪問(wèn)方法 Hibernate 訪問(wèn)持久化類(lèi)屈性的策略1 .propertye 默認(rèn)值:衣明 hibernate 通過(guò) getXXX 和 setXXX 來(lái)訪問(wèn)類(lèi)屬性。推薦使用。捉高域模型透明性。2.field:hibernate 通過(guò) java 反射機(jī)制直接訪問(wèn)類(lèi)屬性。對(duì)丁沒(méi)有 javabean 方法的屬社門(mén) J 設(shè)置該訪問(wèn)策略。除了 設(shè)置property屬性的access為field和propertyZ外 還可以自定義訪問(wèn)策略, 需要?jiǎng)?chuàng)建實(shí)現(xiàn)net.sf.hibernate, property. PropertyAccessor接 口 的類(lèi)。( 傳智C傳智播客 一高級(jí)軟件
24、人才賣(mài)作培訓(xùn)專(zhuān)家!、對(duì)象關(guān)系映射基礎(chǔ)持久化類(lèi)的屬性及訪問(wèn)方法在持久化類(lèi)的方法中加入程序邏輯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傳智播客一髙級(jí)軟件人才賣(mài)作培訓(xùn)專(zhuān)家對(duì)彖關(guān)系映射基礎(chǔ)持久化類(lèi)的屬性及訪問(wèn)方法在持久化類(lèi)的方法屮加入程序邏輯不管在類(lèi)中是否存在name屬性,只要在Customer.hbm.xml文件中映射 了name屬性, 在hql語(yǔ)句中就能訪問(wèn)施o| Session.findCfrom customer as c where =tom)如果改成:后過(guò)如何?_丿北京傳智播客教|7 C傳智播客 一高級(jí)軟件人才夾作培訓(xùn)專(zhuān)家!、對(duì)象關(guān)系映射基礎(chǔ)持久化類(lèi)的屬性及訪問(wèn)方法設(shè)置派生屬性利用7C 索的 formula 屬性,用來(lái)設(shè)置一個(gè) sql 表達(dá)武, hibernate
26、 將根據(jù)它來(lái)計(jì)算出派生屈性的值。丿北京傳智播客教|7 對(duì)彖關(guān)系映射基礎(chǔ)持久化類(lèi)的屬性及訪問(wèn)方法控制 insert、update 語(yǔ)句C傳智播客 一7T級(jí)軟件人才夾作培訓(xùn)專(zhuān)家!、對(duì)象關(guān)系映射基礎(chǔ)處理sql引用表示符在 SQL 語(yǔ)法中,農(nóng)示符是指用 F 為數(shù)據(jù)庫(kù)農(nóng)、視圖、字段 或索引等名字的字符串,常規(guī)表示梓不包括簾格,也不包 含特殊字符,內(nèi)此無(wú)需使川弓川符號(hào)。如只數(shù)據(jù)庫(kù)表名或 列名包含特殊字符,可以使用口用表示符。廠傳映射屈性作用cpropercy insert屈性若為raise, fEinsertUrfiJ屮不包舍垓丫段.孩了段水遠(yuǎn)不健被倆入。 狀認(rèn)值true。 update屬性 若為false, update語(yǔ)句不包含該字段.該字段永遠(yuǎn)不能被更新。歡認(rèn) 值為ue。 mutableW性若為false*簣價(jià)十所Tj Jproperty7CJ的update屈性為false整個(gè)實(shí)例不能被更新。默認(rèn)為truaodynamic-insertW性等價(jià)J所仃的propm:y尤索的dynarnic-inse
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 任課教師安全責(zé)任清單
- 電主軸熱固耦合分析及實(shí)驗(yàn)研究
- 清代黃宗羲形象書(shū)寫(xiě)研究
- 新入職工安全培訓(xùn)試題及答案滿分必刷
- 員工安全培訓(xùn)考試題答案滿分必刷
- 紅豆杉體細(xì)胞胚胎發(fā)生及轉(zhuǎn)錄組學(xué)分析
- 核心力量訓(xùn)練對(duì)8-10歲少兒拉丁舞中單腳旋轉(zhuǎn)動(dòng)作技術(shù)的影響
- 企業(yè)安全管理人員安全培訓(xùn)考試題含完整答案(各地真題)
- 廠里廠里安全培訓(xùn)考試題帶答案(新)
- 企業(yè)管理人員安全培訓(xùn)試題附答案【培優(yōu)A卷】
- 基礎(chǔ)工程復(fù)習(xí)資料
- 鋼鐵項(xiàng)目環(huán)評(píng)報(bào)告 - 17結(jié)論與建議
- 04S519小型排水構(gòu)筑物(含隔油池)圖集
- (高清版)JTG 3363-2019 公路橋涵地基與基礎(chǔ)設(shè)計(jì)規(guī)范
- 旅游行業(yè):2024中國(guó)出境游客白皮書(shū)
- 重癥患者體位管理
- 全國(guó)計(jì)算機(jī)等級(jí)考試(二級(jí))考試題庫(kù)含完整答案【歷年真題】
- 北京市海淀區(qū)2024年七年級(jí)下學(xué)期數(shù)學(xué)期中考試試卷(附答案)
- 畢業(yè)論文基于STM32F103單片機(jī)的智能電表交流電壓電流設(shè)計(jì)
- 飛輪儲(chǔ)能簡(jiǎn)介演示
- 《我是一張紙》第一課時(shí)(作業(yè)設(shè)計(jì))部編版道德與法治二年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論