對象持久化:
1. ORM模式
2. CMP 模式
3. JDO 模式
4. 主動域對象模式
實現數據持久化的框架
分析:
1. 多種類型數據庫基類: AbstractPM
1.1 關係型數據庫
1.1.1 理論基礎:
1.1.1.1 JPA JPA通過JDK 5.0註解或XML描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中。
ORM範疇
1.1.1.2 ADO.NET Entity Framework, 是微軟以 ADO.NET 爲基礎所發展出來的對象關係對應 (O/R Mapping) 解決方案,早期被稱爲 ObjectSpace,現已經包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5 Service Pack 1 中發表。
ADO.NET Entity Framework 以 Entity Data Model (EDM) 爲主,將數據邏輯層切分爲三塊,分別爲 Conceptual Schema, Mapping Schema 與 Storage Schema 三層,其上還有 Entity Client,Object Context 以及 LINQ 可以使用。
ADO.NET Entity Framework 以 Entity Data Model (EDM) 爲主,將數據邏輯層切分爲三塊,分別爲 Conceptual Schema, Mapping Schema 與 Storage Schema 三層,其上還有 Entity Client,Object Context 以及 LINQ 可以使用。
ORM範疇
1.1.1.3 JDO JDO(Java Data Object )是Java對象持久化的新的規範,也是一個用於存取某種數據倉庫中的對象的標準化API。JDO提供了透明的對象存儲,因此對開發人員來說,存儲數據對象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經轉移到JDO產品提供商身上,使開發人員解脫出來,從而集中時間和精力在業務邏輯上。另外,JDO很靈活,因爲它可以在任何數據底層上運行。JDBC只是面向關係數據庫(RDBMS)JDO更通用,提供到任何數據底層的存儲功能,比如關係數據庫、文件、XML以及對象數據庫(ODBMS)等等,使得應用可移植性更強
JDO模式
1.1.1.4 EJB
一個技術規範:EJB 從技術上而言不是一種"產品",
EJB 是一種標準描述了構建應用組件要解決的:
可擴展 (Scalable) 分佈式 (Distributed) 事務處理 (Transactional) 數據存儲 (Persistent) 安全性 (Secure)
CMP模式
1.1.2 對應實現框架
1.1.2.1 Hibernate/NHibernate 對應JPA 數據ORM模式
核心步驟:
核心類: Session
原理:
1.讀取並解析配置文件
2.讀取並解析映射信息,創建SessionFactory ORM--> 生成metadata類過程
3.打開Sesssion
4.創建事務Transation
5.持久化操作 Session.save(Obj), Session.update(obj)
6.提交事務
7.關閉Session
8.關閉SesstionFactory
1.讀取並解析配置文件
2.讀取並解析映射信息,創建SessionFactory ORM--> 生成metadata類過程
3.打開Sesssion
4.創建事務Transation
5.持久化操作 Session.save(Obj), Session.update(obj)
6.提交事務
7.關閉Session
8.關閉SesstionFactory
1.1.2.2 IBatis/IBatisNet iBATIS一詞來源於“internet”和“abatis”的組合,是一個由Clinton Begin在
2001年發起的開放源代碼項目。最初側重於密碼軟件的開發,現在是一個基於Java的持久層框架。
iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO),同時還提供一個利用這個框架開發的JPetStore實例
原理:
SqlMapClient 對象是ibatis持久層操作的基礎,提供了一系列的對照方法
insert()方法實現對插入SQL語句的映射;
delete()方法實現對刪除SQL語句的映射;
update()方法實現對更新SQL語句的影射;
queryForList()、queryForMap()、queryForObject()、queryForPaginatedList()等方法提供了一組查詢SQL語句的影射
delete()方法實現對刪除SQL語句的映射;
update()方法實現對更新SQL語句的影射;
queryForList()、queryForMap()、queryForObject()、queryForPaginatedList()等方法提供了一組查詢SQL語句的影射
實現步驟:
1.ibatis SQL Map 配置文件
文件中對所用數據庫的連接做了基本配置,包括數據庫驅動類型、用戶名、密碼,以及連接池的相關管理數據。
2.PO和映射文件
和hibernate一樣,PO作爲數據庫關係表的影射,也需要響應的映射配置文件,可以手寫,也可以藉助hibernate的相關工具生成PO,不會影響PO在ibatis中的使用。與hibernate不同的是,ibatis的映射文件中沒有對PO中每個屬性做響應的描述,而是指定了一系列與PO有關的SQL相關操作,也體現了ibatis良好的靈活性與可擴展性。
3.編寫DAO
在DAO中,可以使用SqlMapClient提供的方法來對應的指定對PO操作的SQL語句,從而使業務邏輯層的開發仍然是面向對象的操作。相對Hibernate“O/R”而言,iBATIS 是一種“Sql Mapping”的ORM實現。
文件中對所用數據庫的連接做了基本配置,包括數據庫驅動類型、用戶名、密碼,以及連接池的相關管理數據。
2.PO和映射文件
和hibernate一樣,PO作爲數據庫關係表的影射,也需要響應的映射配置文件,可以手寫,也可以藉助hibernate的相關工具生成PO,不會影響PO在ibatis中的使用。與hibernate不同的是,ibatis的映射文件中沒有對PO中每個屬性做響應的描述,而是指定了一系列與PO有關的SQL相關操作,也體現了ibatis良好的靈活性與可擴展性。
3.編寫DAO
在DAO中,可以使用SqlMapClient提供的方法來對應的指定對PO操作的SQL語句,從而使業務邏輯層的開發仍然是面向對象的操作。相對Hibernate“O/R”而言,iBATIS 是一種“Sql Mapping”的ORM實現。
1.1.2.3
1.2 對象數據庫
1.3 後關係型數據庫-- Cache數據庫
1.3.1 理論基礎
1.1.3.1 JPA JPA通過JDK 5.0註解或XML描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中。
ORM範疇
1.3.2 實現框架 1.3.2.1 Hiberante
1.3.2.2 Jalapeño The Jalapeño Persistence Library for Java is a powerful, lightweight tool that provides an easy way for your Java application to store and access POJOs (Plain Old Java Objects) without mapping, Jalapeño的底層訪問時JDBC 也是就是說它自動轉換成了SQL語句來訪問數據庫, 它是一個輕量級的工具; 分成設計態和運行態;
核心類是: ObjectManager
包含的方法:save()、 update()、openById() 藉助於泛型可以很好實現AR模型
也可以實現DAO模型; 開發人員寫DAO就可以了;
1.3.2.3 EJB binding
技術模型:
web應用架構
主要討論數據持久化:
1 AR模式: POJO繼承一個數據管理基類,有些集成好的方法
2 DAO模式 把持久層分成: POJO層,DAO層兩層來管理數據持久化, 應用要複雜一點;