資源描述:
《Hibernate應(yīng)用基礎(chǔ)知識(shí)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、企業(yè)級JAVAII軟件工程系:聶常紅cred_n@163.com內(nèi)容回顧輸入校驗(yàn)概念輸入校驗(yàn)方式Struts2校驗(yàn)框架校驗(yàn)語法常用Struts2校驗(yàn)器Struts2校驗(yàn)器配置方式第8講Hibernate應(yīng)用基礎(chǔ)知識(shí)8.1ORM框架8.2Hibernate8.2.1Hibernate的運(yùn)行環(huán)境8.2.2持久化類8.2.3映射文件8.2.4Hibernate核心類與接口8.3開發(fā)一個(gè)簡單的Hibernate項(xiàng)目8.4Hibernate對象的三種狀態(tài)8.5持久層設(shè)計(jì)模式8.6基于持久層框架的DAO模式應(yīng)用
2、示例8.1ORM問題引入:面向?qū)ο笳Z言:對象模型,主要概念是類、對象、繼承、多態(tài)、關(guān)聯(lián)等關(guān)系型數(shù)據(jù)庫:關(guān)系模型,主要概念是表、記錄、主鍵、外鍵等面向?qū)ο笳Z言和數(shù)據(jù)庫之間存在模型不匹配(阻抗不匹配)問題問題解決辦法:使用ORM框架ORM:ORM(Object/RelationMapping,對象、關(guān)系數(shù)據(jù)庫映射),用于實(shí)現(xiàn)Java應(yīng)用中的對象與關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)的映射,從而可以通過持久化對象(PO)以面向?qū)ο蟮姆绞絹聿僮鲾?shù)據(jù)庫。ORM關(guān)系圖:idnameage1張三302李四263王五23Person
3、id:intname:Stringage:intperson:Personid=2name=“李四“age=23person表ORM基本映射關(guān)系類表對象記錄屬性字段類之間的關(guān)系外鍵8.2hibernate主流的ORM框架有hibernate、TopLink等,其中hibernate應(yīng)用最廣泛Hibernate是輕量級的JavaEE應(yīng)用的持久層解決方案。它對JDBC進(jìn)行了輕量級的封裝,不僅能管理Java類到數(shù)據(jù)庫表的映射,還能提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法。使用Hibernate可以大幅度減少開發(fā)時(shí)人工
4、使用SQL和JDBC處理數(shù)據(jù)的時(shí)間Hibernate簡要體系架構(gòu):ApplicationHibernatePersistentObjectsHibernate.cfg.xmlXMLMappingDataBasePO是應(yīng)用程序和ORM框架之間的一個(gè)媒介8.2.1Hibernate運(yùn)行環(huán)境需要以下jar文件:配置hibernate.cfg.xml文件或hibernate.properties屬性文件用于配置數(shù)據(jù)庫連接設(shè)置、Hibernate屬性設(shè)置及映射文件設(shè)置。兩者取一,常用xml文件http://w
5、ww.hibernate.orghibernate.cfg.xml示例:實(shí)際使用一般不用Hibernate的連接池8.2.2持久化類ORM的作用是把對PO的CRUD等操作轉(zhuǎn)換成對數(shù)據(jù)庫的相關(guān)操作。持久化類編寫規(guī)范:必須具有無參構(gòu)造方法具有一個(gè)主鍵屬性非final類,否則無法使用懶加載以及代理使用JavaBean的編寫規(guī)范來編寫屬性的setter和getter方法持久化類創(chuàng)建示例:8.2.3映射文件用于設(shè)置持久化類與數(shù)據(jù)庫表的映射關(guān)系,是hibernate的核心所在。一般以持久化類名+hbm.xml來
6、命名,如Person.hbm.xml;并保存在與持久化類同目錄下最主要的元素有::設(shè)置類-表之間的映射:設(shè)置主鍵映射:設(shè)置普通屬性-表字段之間的映射、、:設(shè)置關(guān)聯(lián)映射映射文件示例:常用主鍵生成方式:assigned:由應(yīng)用程序生成identity:使用數(shù)據(jù)庫提供的自增長主鍵機(jī)制,如Mysqlsequence:使用數(shù)據(jù)庫提供的sequence機(jī)制生成主鍵,如oraclenative:
7、由hibernate根據(jù)數(shù)據(jù)庫驅(qū)動(dòng)定義,自動(dòng)選擇主鍵生成機(jī)制8.2.4Hibernate核心APIHibernate核心類和接口Hibernate體系結(jié)構(gòu)Configuration類:負(fù)責(zé)讀取及解析Hibernate的配置信息創(chuàng)建SessionFactory實(shí)例Configuratoncfg=newConfiguration();cfg.configure();//讀取配置文件//創(chuàng)建SessionFactory實(shí)例SessionFactorysf=cfg.buildSessionFactory()
8、;SessionFactory接口:是數(shù)據(jù)庫編譯后的內(nèi)存鏡向,其中緩存了解析后的配置信息在應(yīng)用初始化時(shí)創(chuàng)建,對于使用一個(gè)數(shù)據(jù)庫的應(yīng)用程序只有一個(gè)會(huì)話工廠用于創(chuàng)建Session實(shí)例Configuratoncfg=newConfiguration();cfg.configure();//讀取配置文件SessionFactorysf=cfg.buildSessionFactory(serviceRegistry);Sessionsession=sf.openSession(