持久化层
(1)什么叫持久化?
在图1右中,分离出的持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API。
持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
(2)什么叫持久层?
持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。
(3)为什么要持久化?增加持久层的作用是什么?
数据库的读写是一个很耗费时间和资源的操作,当大量用户同时直接访问数据库的时候,效率将非常低,如果将数据持久化就不需要每次从数据库读取数据,直接在内存中对数据进行操作,这样就节约了数据库资源,而且加快了系统的反映速度。
增加持久化层提高了开发的效率,使软件的体系结构更加清晰,在代码编写和系统维护方面变得更容易。特别是在大型的应用里边,会更有利。同时,持久化层作为单独的一层,人们可以为这一层独立的开发一个软件包,让其实现将各种应用数据的持久化,并为上层提供服务。从而使得各个企业里做应用开发的开发人员,不必再来做数据持久化的底层实现工作,而是可以直接调用持久化层提供的API。
(4)目前在持久化层领域,实现模式有以下几种:
A 业务逻辑和数据访问耦合
B 主动域对象模式
C ORM模式
D JDO模式
E CMP模式
3 ORM介绍
ORM(Object Relational Mapping),即对象关系映射。
指以O/R原理设计的持久化框架(Framework),包括 O/R机制、SQL自生成、事务处理和Cache管理等。
ORM的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。
常用的ORM中间件有:
Apache OJB (http://db.apache.org/ojb/)
Cayenne (http://objectstyle.org/cayenne/)
Jaxor (http://jaxor.sourceforge.net)
Hibernate (http://www.hibernate.org)
iBatis (http://www.ibatis.com)
jRelationalFramework (http://ijf.sourceforge.net)
mirage (http://itor.cq2.org/en/oss/mirage/toon)
SMYLE (http://www.drjava.de/smyle)
TopLink (http://otn.oracle.com/products/ias/toplink/index.html)
其中 Hibernate 的轻量级 ORM 模型逐步确立了在 Java ORM 架构中领导地位,甚至取代复杂而又繁琐的 EJB 模型而成为事实上的 Java ORM 工业标准。而且其中的许多设计均被 J2EE 标准组织吸纳而成为最新 EJB 3.0 规范的标准。
二 Hibernate定义
Hibernate是一种Java语言下的对象关系映射解决方案。 它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
三 Hibernate的作用
Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。
它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。
四 Hibernate的应用
Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,它既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB(Enterprise JavaBeans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。
五 Hibernate API简介
1 Hibernate API中的接口可以分为以下几类:
(1) 提供访问数据库的操作的接口,包括session、Transaction、Query接口;
(2) 用于配置Hibernate的接口,Configuration;
(3) 间接接口,使应用程序接受Hibernate内部发生的事件,并作出相关的回应,包括:Interceptor、Lifecycle、Validatable;
(4) 用于扩展Hibernate功能的接口,如UserType、CompositeUserType、IdentifierGenerator接口。
Hibernate内部还封装了JDBC、JTA(Java Transaction API)和JNDI(Java Naming And Directory Interface)。其中,JDBC提供底层的数据访问操作,只要用户提供了相应的JDBC驱动程序,Hibernate可以访问任何一个数据库系统。JTA和JNDI使Hibernate能够和J2EE应用服务器集成。
2 Hibernate的核心接口框图
六 Hibernate的优缺点
(1)优点:
a.Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性。
b.Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。
c. 它支持各种关系数据库,从一对一到多对多的各种复杂关系。
(2)缺点:
Hibernate限制您所使用的对象模型。例如,一个持久性类不能映射到多个表
分享到:
相关推荐
标题中的“自己写的一个持久化层”指的是作者创建了一个用于数据存储和检索的软件组件,类似于知名的ORM(对象关系映射)框架Hibernate。持久化层是应用程序中的一个关键部分,它负责将业务对象的数据保存到数据库中...
### 域对象在持久化层的状态:深入解析 在软件开发中,特别是涉及数据库操作的应用场景下,理解和掌握域对象在持久化层的状态对于优化系统性能和维护数据一致性至关重要。本文将围绕“域对象在持久化层的状态”这一...
数据库持久化层是指在应用程序中用于与数据库交互的一层抽象,它负责将对象的状态转换为可以存储的数据格式,并在需要时恢复这些状态。这样做的好处在于,开发者可以不用直接编写SQL语句,而是通过面向对象的方式来...
在本文中,我们将深入探讨如何使用Liferay框架进行开发,特别是关注其持久化层和服务层的构建。通过分析“Liferay开发持久化层和服务层演示Demo代码”这一主题,我们将理解Liferay Service Builder如何帮助开发者...
Basil.js 是一个 JavaScript 的数据持久化层库,实现了统一的 LocalStorage、Cookie 和 Session 存储。基本使用:basil = new window.Basil(options); // basic methods basil.set('foo', 'bar'); // store...
本主题将深入探讨JavaEE系统架构中的持久化层、面向对象编程以及工作流,同时结合实际案例——企业主流MySQL高可用集群架构三部曲之PXC,来增强理解。 首先,JavaEE的持久化层是处理数据库交互的核心部分。它通过...
在 Hibernate 中,持久化层的游离状态(Detached State)是指对象已经从 Session 中移除,但仍存在于应用程序的内存中。在这种状态下,对象与数据库的关联被断开,对对象的修改不会自动同步到数据库。如果需要更新...
在Java开发中,持久层和持久化是两个关键的概念,它们是对象与数据库交互的核心。本文将探讨iBATIS、Hibernate以及Java Persistence API (JPA)这三种流行的持久化框架,并进行对比分析。 首先,持久层(Persistence...
通过Idea创建Spring Boot java项目 基于Spring Boot + MVC 之控制器Controller实现 基于Spring Boot + MVC 之service和持久化层的实现 基于Spring Boot + JPA实现MVC三层框架
基于.Netcore的开发效率高,性能强,跨平台,持久化层透明,支持不停服热更新的游戏服务器。Best for your unity game server!_GeekServer
在Android应用开发中,数据持久化是一个至关重要的环节,它涉及到如何将应用程序中的数据存储到本地,以便在后续使用时能够快速访问。ORMLite是一个轻量级的Java ORM(对象关系映射)库,它可以帮助开发者简化数据库...
- **四层应用**:在三层的基础上加入了持久化层,用于处理与数据库交互的细节。 - **N层应用**:根据实际需求进一步细分层次,提高系统的可扩展性和可维护性。 ##### 软件层的特征及优点 - **层间依赖关系**:上层...
1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据模型 1.2.3 域模型 1.2.4 域对象 1.2.5 域对象之间的关系 1.2.6 域对象的持久化概念 1.3 小结 1.4 思考题 第2章 Java...
2. MyBatis 对 JDBC 访问数据库的代码进行封装,从而大大简化了数据访问层的重复性代 码,它是针对三层架构中的持久化层的解决方案。 3. Log4j 是一个日志记录工具,提供了不同的日志级别,包括 ERROR、TRACE、...
- **持久化层的关键作用**:封装数据访问,提供面向对象的接口,与数据库的实现解耦。 6. **Hibernate使用**: - **配置**:包括Hibernate配置文件、实体类的标注和映射文件。 - **对象状态**:瞬时态、持久态、...
Hibernate位于持久化层,是域模型和关系数据模型之间的桥梁。 1.1 应用程序的分层体系结构 1 1.1.1 区分物理层和逻辑层 2 1.1.2 软件层的特征 3 1.1.3 软件分层的优点 4 1.1.4 软件分层的缺点 4 1.1.5 Java...
1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据模型 1.2.3 域模型 1.2.4 域对象 1.2.5 域对象之间的关系 1.2.6 域对象的持久化概念 1.3 小结 1.4 思考题 第2章 Java...
1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据模型 1.2.3 域模型 1.2.4 域对象 1.2.5 域对象之间的关系 1.2.6 域对象的持久化概念 1.3 小结 1.4 思考题 第2章 Java...