作為 Java 企業版 5 (Java EE 5) Enterprise Java Bean (EJB) 3.0 規范的組成部分,Java 持續性 API (JPA) 顯著簡化了 EJB 持續性并提供了一個對象關系映射方法,該方法使您可以采用聲明方式定義如何通過一種標準的可移植方式(在 Java EE 5 應用服務器內部以及 Java 標準版 (Java SE) 5 應用程序中的 EJB 容器外部均可使用)將 Java 對象映射到關系數據庫表。
JPA簡介主要內容JPA概述使用JPA的步驟實體JPA的APIJPQL主要內容JPA概述使用JPA的步驟實體JPA的APIJPQLJPA概述JPA是什么JPA的產生為什么要使用JPAJPA和Hibernate的關系JPA的供應商JPA的實現JPA的優勢JPA的缺點JPA主要的技術一、JPA概述—JPA是什么Java Persistence API,用于對象持久化的API是JavaEE5.0平臺標準的ORM規范,使得應用程序以統一的方式訪問持久層。
JPA全稱Java Persistence API.是Sun官方提出的Java持久化規范。它為Java開發人員提供了一種對象/關系映射工具來管理Java應用中的關系數據。JPA通過JDK 5.0注解或XML描述對象-關系表的映射關系,并將運行期的實體對象持久化到數據庫中。 JPA的宗旨是為POJO提供標準持久化規范,能夠脫離容器獨立運行,方便開發和測試,目前Hibernate3.2/TopLink10.1.3以及OpenJpa都提供了JPA的實現。
commons-dbutils是Apache組織提供的一個開源JDBC工具類庫,能讓我們更簡單的使用JDBC。它是一個非常小的類包,花幾分鐘的時候就能夠掌握它的使用。
模擬緩存的思想一級緩存二級緩存Hibernate主配置文件配置hibernate.cfg.xml實體映射文件測試程序分析統計信息:悲觀鎖:樂觀鎖:配置數據庫連接池:增加c3p0的jar/***模擬Session的緩存思想*。
LazyLoad懶加載
關系級聯操作在如下的操作中如果我們沒有保存Employee會產生錯誤錯誤信息修改配置文件如下:產生如下的sql語句將配置文件改回原來的狀態產生的更改代碼的語句如下:Inverse不能再有序的集合中使用如數組[],列表list在多對多的情況下只能保存兩個對象,如果保存四個對象。
Hibernate的集合類型List類型添加數據后表如下但是更多的情況下我們并不關心員工在數據庫中的順序,這個時候增加一個列會增加數據庫的開銷,這個時候我們不希望增加這樣的一個列,可以使bag屬性Map類型測試代碼測試出現問題的代碼。
關系映射多對一Department.hbm.xmlEmployee.hbm.xml配置住配置文件:編寫主測試文件:添加方法:編寫查詢的測試方法:一對多修改Department類Department.hbm.xml編寫測試代碼:一對一使用共同的主鍵在主配置文件中添加映射編寫測試代碼:使用多對一實現一對一多對多TeacherStudent添加的測試方法查詢測試代碼查詢語句聯合鍵的使用編寫配置文件編寫測試程序生成如下表繼承映射在同一張表中保存所有的信息食用鑒別者列測試代碼如下產生如下的SQL語句數據庫效果如下。
Hibernate領域對象的使用限制提供一個有無意義的標識作為主鍵,該屬性不參與邏輯業務。提供一個無參的構造方法不要把類設計成final類型的(無法實現懶加載)配置文件分析,在配置文件中如果我們不指定一些配置信息,Hibernate會使用默認的配置信息,來配置相應的數據庫的信息。
Hibernate解決的是模型不匹配、阻抗不匹配1、新建javaproject2、添加如下的jar包3、在實體包下創建實體類User4、創建并編寫實體類到數據庫的映射文件并進行配置MyUser.hbm.xml5、在src目錄下創建hibernate.cfg.xml配置文件。
N+1使用iterator時的n+1在一對一懶加載中的n+1監聽器攔截器與事件(監聽)編寫監聽器在hibernate.cfg.xml中增加配置選項使用SQL使用命名sql將命名語句放到class內部測試類。
一對一關聯關系(外鍵關聯)我們做這樣的一個假設,公司分配員工住宿,每人分配一個房間。
Hibernate 概述
映射文件詳解目標學習Hibernate的配置文件(hibernate.cfg.xml)學習Hibernate的映射聲明(*.hbm.xml)Hibernate配置文件Hibernate配置文件主要用于配置數據庫連接和Hibernate運行時所需的各種屬性每個Hibernate配置文件對應一個Configuration對象。
MyBatis 是支持普通 SQL 查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除 了幾乎所有的 JDBC 代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML 或注解用于配置和原始映射,將接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 對象)映射成數據庫中的記錄。
MyBatis 是支持普通 SQL 查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除 了幾乎所有的 JDBC 代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML 或注解用于配置和原始映射,將接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 對象)映射成數據庫中的記錄。
Hibernate實體對象生命周期實體對象三種狀態實體對象的生命周期就是指實體對象由產生到被Gc揮手的一段過程自由狀態不處在session的緩存中,也可以說,不被任何一個session實體關聯在數據庫中設有對應記錄持久狀態位于一個session實例的緩存中,也可以說持久化對象總被一個session實例關聯持久化對象和數據庫中的相關記錄對應session在清理緩存時.
Hibernate理解持久化、ORM理解持久化瞬時狀態:在程序運行的時候,有些程序數據保存在內存中,當程序退出后,這些數據就不復存在了,所以,我們稱這些數據的狀態為瞬時的。持久狀態:在使用一些軟件的時候,有些數據在程序退出后,還以文件等形式保存在硬盤中,那么我們稱這些數據的狀態是持久的。持久化:就是講程序中的數據在瞬時狀態和持久狀態之間轉換的機制。ORM概述對象-關系映射:能在對象和關系型數據庫兩者間進行數據轉換的機制。
MyBatis-Spring會幫助你將MyBatis代碼無縫地整合到Spring中。使用這個類庫中的類,Spring將會加載必要的MyBatis工廠類和session類。這個類庫也提供一個簡單的方式來注入MyBatis數據映射器和SqlSession到業務層的bean中。而且它也會處理事務,翻譯MyBatis的異常到Spring的DataAccessException異常(數據訪問異常,譯者注)中。