資源描述:
《hibernate原理與應(yīng)用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Hibernate原理與應(yīng)用主要內(nèi)容引入安裝配置基本概念和CURDHQL和Criteria關(guān)聯(lián)映射繼承映射集合映射懶加載緩存事務(wù)其他Hibernate不適合的場景與JPA的集成(annotation方式)最佳實(shí)踐引入模型不匹配(阻抗不匹配)Java面向?qū)ο笳Z言,對(duì)象模型,其主要概念有:繼承、關(guān)聯(lián)、多態(tài)等;數(shù)據(jù)庫是關(guān)系模型,其主要概念有:表、主鍵、外鍵等。解決辦法1使用JDBC手工轉(zhuǎn)換。2使用ORM(ObjectRelationMapping對(duì)象關(guān)系映射)框架來解決,主流的ORM框架有Hibernate、TopLink、OJB。安裝配置下載地址http://www.hibern
2、ate.org,本教程使用3.2.5。將下載目錄/hibernate3.jar和/lib下的hibernate運(yùn)行時(shí)必須的包加入classpath中:antlr.jar,cglib.jar,asm.jar,commons-collections.jar,commons-logging.jar,jta.jar,dom4j.jar安裝配置配置文件hibernate.cfg.xml和hibernate.properties,XML和properties兩種,這兩個(gè)文件的作用一樣,提供一個(gè)即可,推薦XML格式,下載目錄/etc下是示例配置文件??梢栽谂渲梦募付ǎ簲?shù)據(jù)庫的URL、用戶
3、名、密碼、JDBC驅(qū)動(dòng)類、方言等。啟動(dòng)時(shí)Hibernate會(huì)在CLASSPATH里找這個(gè)配置文件。映射文件(hbm.xml,對(duì)象模型和關(guān)系模型的映射)。在/eg目錄下有完整的hibernate示例??焖匍_始小例子基本概念和CURD開發(fā)流程1由Domainobject->mapping->db。(官方推薦)2由DB開始,用工具生成mapping和Domainobject。(使用較多)3由映射文件開始。基本概念和CURDDomainObject限制1.默認(rèn)的構(gòu)造方法(必須的)。2有無意義的標(biāo)示符id(主鍵)(可選)3非final的,對(duì)懶加載有影響(可選)DomainJavaObj
4、ect(User)publicclassUser{privateintid;privateStringname;privateDatebirthDay;//gettersetter…}基本概念和CURD1.hbm.xml5、day”/>主鍵生成器,參考文檔P655.1.42.詳細(xì)信息見參考文檔P62基本概念和CURDJava代碼1.初始化代碼(只做一次)Configurationcfg=newConfiguration();cfg.configure(“config.cfg.xml”);也可以通過cfg.setProperty設(shè)置屬性。SessionFactorysessionFactory=cfg.buildSessionFactory();2.模板代碼Sessionsession=null;Transactiontx=null;try{
6、session=sessionFactory.openSession();tx=session.beginTransaction();//…你的代碼save,delete,update,get…tx.commit();}catch(Exceptione){if(tx!=null)tx.rollback();throwe;}finally{if(session!=null)session.close();}基本概念和CURDSession的幾個(gè)主要方法1.save,persist保存數(shù)據(jù),persist在事務(wù)外不會(huì)產(chǎn)生insert語句。2.delete,刪除對(duì)象3.update
7、,更新對(duì)象,如果數(shù)據(jù)庫中沒有記錄,會(huì)出現(xiàn)異常。4.get,根據(jù)ID查,會(huì)立刻訪問數(shù)據(jù)庫。5.Load,根據(jù)ID查,(返回的是代理,不會(huì)立即訪問數(shù)據(jù)庫)。6.saveOrUpdate,merge(根據(jù)ID和version的值來確定是save或update),調(diào)用merge你的對(duì)象還是托管的。7.lock(把對(duì)象變成持久對(duì)象,但不會(huì)同步對(duì)象的狀態(tài))。對(duì)象狀態(tài)瞬時(shí)(transient):數(shù)據(jù)庫中沒有數(shù)據(jù)與之對(duì)應(yīng),超過作用域會(huì)被JVM垃圾回收器回收,一般是new出來且與session沒有關(guān)聯(lián)的對(duì)象。持久(per