資源描述:
《hibernate完美培訓教程》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、對象/關系映射—Hibernate學員要求:熟悉Java、SQL、JDBC,掌握面向對象的開發(fā)方法,并有實際項目開發(fā)經驗課程目標:理解O/RMapping原理,掌握Hibernate開發(fā)的相關知識,并能使用Hibernate進行實際項目開發(fā)目錄一、持久化層-O/RMapping二、Hibernate入門三、Hibernate映射申明(Mappingdeclaration)四、持久化對象的狀態(tài)和生命周期五、Hibernate查詢六、Hibernate最佳實踐一、持久化層-O/RMapping基于B/S的典型三層架構如何分層?業(yè)務邏輯層和持久化層絕不要依賴于展現(xiàn)層。使用假設法測試。例子:1、一個
2、顯示課程考試分數(shù)的列表。現(xiàn)在要將不及格的分數(shù)用紅色字體顯示(低于60分)。2、搜索。如何進行對象-關系數(shù)據(jù)庫的匹配publicclassUser{privateStringname;privateStringpassword;privateListaddress;………}createtabletbl_user(namevarchar(255)notnull,passwordvarchar(255),……….primarykey(name))如何進行對象-關系數(shù)據(jù)庫的匹配?對象關系數(shù)據(jù)庫類的屬性(基本類型)表的列類表1:n/n:1外鍵n:m關聯(lián)表繼承單表繼承、具體表繼承、類表繼承對象—關系數(shù)據(jù)
3、庫的不匹配范式粒度(granularity)的問題子類型(subtypes)的問題同一性(identity)的問題與關聯(lián)(associations)有關的問題對象結構導航(navigation)的問題范式不匹配的代價花費很多時間和精力來手工實現(xiàn)對象和關系的匹配。甚至要扭曲對象模型直到它與下層的關系技術匹配為止。JDBCAPI本身的問題。JDBC和SQL提供了一個面向語句(即命令)的方法從SQL數(shù)據(jù)庫中來回移動數(shù)據(jù)。至少在三個時刻(Insert,Update,Select)必須指定一個結構化關系,這增加了設計和實現(xiàn)所需要的時間?;陉P系數(shù)據(jù)庫的持久層可選方案優(yōu)點缺點SQL/JDBC成熟,流行,
4、使用DAO模式代碼煩雜,可讀性差,維護困難,移植困難EntityBeanCMP(EJB1.1之后),未來的EJB3錯誤的設計。不可移植,依賴性強,不可序列化,不支持多態(tài)的關聯(lián)查詢JDO簡單、透明、標準不夠成熟基于關系數(shù)據(jù)庫的持久層可選方案優(yōu)點缺點ApacheOJB性能、穩(wěn)定性,屬于Apache基金組織文檔資源太少,支持標準太多成了負擔(ODMG3.0,JDO1.0)iBATIS可以控制更多的數(shù)據(jù)庫操作細節(jié)。實用于遺留系統(tǒng)的改造和對既有數(shù)據(jù)庫的復用。持久層封裝不夠徹底,只是一個DBHelper。Hibernate成熟、流行、功能強大。并逐漸發(fā)展成Java持久層事實上的標準。不夠透明O/RMap
5、ping-What?Why?什么是O/RMapping?對象-關系映射是一門非常實用的工程技術,它實現(xiàn)了Java應用中的對象到關系數(shù)據(jù)庫中的表的自動的(和透明的)持久化,使用元數(shù)據(jù)(metadata)描述對象與數(shù)據(jù)庫間的映射。O/RMapping的優(yōu)點提高生產率(Productivity)可維護性(Maintainability)更好性能(Performance)廠商獨立性(Vendorindependence)二、Hibernate入門Hibernate概述Hibernate是非常優(yōu)秀、成熟的O/RMapping框架。它提供了強大的對象和關系數(shù)據(jù)庫映射以及查詢功能。Hibernate優(yōu)勢開
6、源(LGPL)成熟流行(約13000downloads/month)自定義APIJBoss將用Hibernate3實現(xiàn)EntityBeansHibernate開發(fā)步驟一、持久化類的設計二、持久化類和關系數(shù)據(jù)庫的映射三、應用的開發(fā)持久化Java類必須遵循的原則為類的持久化類字段申明訪問方法(get/set)。Hibernate對JavaBeans風格的屬性實行持久化。實現(xiàn)一個默認的構造方法(constructor)。這樣的話Hibernate就可以使用Constructor.newInstance()來實例化它們。如果是集合類型的屬性,它的類型必須定義為集合的接口。例如:List、Set。提供
7、一個標識屬性(identifierproperty)。如果沒有該屬性,一些功能不起作用,比如:級聯(lián)更新(Cascadedupdates)Session.saveOrUpdate()。持久化類和關系數(shù)據(jù)庫的映射XDoclet:它通過在Java源代碼中加入特定的JavaDoctag,從而為其添加特定的附加語義,之后通過XDoclet工具對代碼中JavaDocTag進行分析,自動生成與代碼對應的配置文件(http: