教學內容立即檢索策略延遲檢索策略迫切左外連接檢索策略每種檢索策略的適用范圍在程序中顯式指定迫切左外連接檢索策略CUSTOMERS表和ORDERS表中的記錄運行Query的list()方法ListcustomerLists=session.createQuery("fromCustomerasc").list();假定采用立即檢索策略,運行以上Query的list()方法時,Hibernate將先查詢CUSTOMERS表中所有的記錄。
目的:確定你將面臨的一些問題時,特別是在企業環境中使用JDO,
1.@Entity實體2.@Id表示主鍵3.@Table(name=”tbl_sky”uniqueConstraints={@UniqueConstraint(columnNames={“month”,”day”})})類一級注解4.@Versionversion屬性將映射到OPTLOCK列,EntityManager使用該字段來檢測更新沖突,防止新的丟失。字段可以是numeric類型也可以是timestamp類型,hibernate支持任何類型,只要是該類型實現了UserVersionType5.所有非static非transient的屬性都可以被持久化,除非將其注解為@Transient,所有沒有定義注解的屬性都等價于在其上添加了@Basic注解6.@Basic(fetch=FetchType.LAZY)這個是用來注解普通屬性的,fetch指的獲取策略,FetchType.LAZY是延遲獲取。
課程介紹講課內容Hibernate,JPA,JTA,POJO概念了解Log4j配置動手練會Junit配置動手練會主鍵生成策略重要組件映射不重要復合主鍵不重要核心開發接口重要對象關系映射重要繼承映射不重要,知道有那幾種就可以。 集合映射不重要,知道有哪幾種CRUD重要,動手練會inverse級聯操作延遲加載抓取策略樹狀結構(作業)重要HQL重要QBC、QBE不重要事務隔離級別、悲觀鎖,樂觀鎖理解一級緩存、二級緩存,查詢緩存理解
MyBatis 世界上流行最廣泛的SQL 映射框架,由Clinton Begin 在2002 年創建,其后,捐獻給了Apache 基金會,成立了iBatis 項目。2010 年5 月,將代碼庫遷致Google Code,并更名為MyBatis。 MyBatis 是一個可以自定義SQL、存儲過程和高級映射的持久層框架。MyBatis 摒除了大部分的JDBC 代碼、手工設置參數和結果集重獲。MyBatis 只使用簡單的XML 和注解來配置和映射基本數據類型、 Map 接口和POJO 到數據庫記錄。
假如你喜歡原生的Sql語句,又喜歡ORM的簡單,那你一定會喜歡上Dapper這款ROM。Dapper的優勢:<br> 1,Dapper是一個輕型的ORM類。代碼就一個SqlMapper.cs文件,編譯后就40K的一個很小的Dll.<br> 2,Dapper很快。Dapper的速度接近與IDataReader,取列表的數據超過了DataTable。
JPA(Java Persistence API)作為Java EE 5.0平臺標準的ORM規范,將得到所有Java EE服務器的支持。Sun這次吸取了之前EJB規范慘痛失敗的經歷,在充分吸收現有ORM框架的基礎上,得到了一個易于使用、伸縮性強的ORM規范。從目 前的開發社區的反應上看,JPA受到了極大的支持和贊揚,JPA作為ORM領域標準化整合者的目標應該不難實現。 <br> JPA通過JDK 5.0注解或XML描述對象-關系表的映射關系,并將運行期的實體對象持久化到數據庫中,圖 1很好地描述了JPA的結構: Sun引入新的JPA ORM規范出于兩個原因:其一,簡化現有Java EE和Java SE應用的對象持久化的開發工作;其二,Sun希望整合對ORM技術,實現天下歸一。
第二章Hibernate API目標:HibernateAPI簡介0Hinernate的體系結構(運行時)SessionFactory:它保存了對當前數據庫配置的所有映射關系,它是將某個數據庫的映射關系經過編譯之后全部保存在內存中的。它還是生成Session的工廠,它在進行實例化的過程中將會用到ConnectionProvider。一個SessionFactory對應一個數據庫連接,當數據庫連接改變時需要修改SessionFactorySession:是進行持久化操作的基礎,所有的持久化操作都是在Session的基礎上進行的。它相當與JDBC中的Connection。
本章介紹了Hibernate的幾種主要檢索方式:HQL檢索方式、QBC檢索方式、SQL檢索方式。HQL是Hibernate Query Language的縮寫,是官方推薦的查詢語言。QBC是Query By Criteria的縮寫,是Hibernate提供的一個查詢接口。Hibernate是一個輕量級的框架,它允許使用原始SQL語句查詢數據庫。HQL是Hiberante官方推薦的Hibernate檢索方式,它使用類似SQL的查詢語言,以面向對象的方式從數據庫中查詢。可以使用HQL查詢具有繼承、多態和關聯關系的數據。在檢索數據時應優先考慮使用HQL方式。
Criteria Query通過面向對象化的設計,將數據查詢條件封裝為一個對象。簡單來講,Criteria Query可以看作是傳統SQL的對象化表示。
用了寫hibernate高級查詢時用了Restrictions(當然Expression也是可以以的)這個類.感覺不錯.下面的代碼寫的不易讀.
MyBatis是支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。 每一個MyBatis的應用程序都以一個SqlSessionFactory對象的實例為核心。SqlSessionFactory對象的實例可以通過SqlSessionFactoryBuilder對象來獲得。
使用hibernate Annotation來映射實體
當我們用HQL進行子查詢的時候,如select * from Tree where pid in (select id from Tree,此時HIBERANTE就會報錯,說什么*號錯誤之類的。但如果將*改為Tree類里的所有子段時就不會有問題了。就會像平時一樣第一行數據返回一個Object[],然后你再根據Tree類里字段對Object[]數組里的值進行轉換。這樣一來比較麻煩。今天發現如果我SQL來查有一個方法可以返回一個對象的。
NHibernate不僅僅管理.NET類到數據庫表的映射(包括.NET數據類型到SQL數據類型的映射),還提供數據查詢和獲取數據的方法,可以大幅度減少開發時人工使用SQL和ADO.NET處理數據的時間。 <br> NHibernate的目標是對于開發者通常的數據持久化相關的編程任務,解放其中的95%。對于以數據為中心的程序來說,它們往往只在數據庫中使用存儲過程來實現商業邏輯,NHibernate可能不是最好的解決方案;對于那些在基于.NET的中間層應用中,它們實現面向對象的業務模型和商業邏輯的應用,NHibernate是最有用的。不管怎樣,NHibernate一定可以幫助你消除或者包裝那些針對特定廠商的SQL代碼,并且幫你把結果集從表格式的表示形式轉換到一系列的對象去。
一、Hibernate的優點Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用。hibernate為java提供了一個易用的,高效率的關系對象映射。它使用java反射機制,而不是字節碼增強程序來實現透明性(hibernate中的ORMapping,就是用一個映射文件將數據庫中的表與java中的類來進行關聯。表中的字段對應了類中的屬性。這樣我們操作的是類,其實就是操作了數據庫。這樣就是透明性。
Hibernate的關聯映射
使用Hibernate,通過簡單的配置即可獲得對象間關聯的能力 常用的關聯有one-to-many關聯和many-to-one關聯。many-to-many在特定場合下也會用到。
Hibernate API簡介。SessionFactory:它保存了對當前數據庫配置的所有映射關系,它是將某個數據庫的映射關系經過編譯之后全部保存在內存中的。 它還是生成Session的工廠,它在進行實例化的過程中將會用到ConnectionProvider。一個SessionFactory對應一個數據庫連接,當數據庫連接改變時需要修改SessionFactory
理解ORM 熟悉Hibernate 的作用