`

转:Java对象持久化技术概述

    博客分类:
  • Java
阅读更多
Java对象持久化技术概述
Hibernate从不同的角度的不同解释:
它是连接Java应用程序和关系数据库的中间件
它对JDBC API进行了封装,负责Java对象的持久化
在分层的软件架构中,它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑
它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射
1、应用程序的分层体系结构
三层结构是目前典型的一种应用软件的结构:表述层、业务逻辑层、数据库层
1.1、区分物理层和逻辑层
软件的分层包含两层含义:一种是物理分层,即每一层都运行在单独的机器上,这意味着创建分布式的软件系统;一种是逻辑分层,指的是在单个软件模块中完成特定的功能。
1.2、软件层的特征
每个层由一组相关的类或组件构成,共同完成特定的功能
层与层之间存在自上而下的依赖关系,即上层组件会访问下层组件的API,而下层组件不应该依赖上层组件
每个层对上层公开API,但具体的实现细节对外透明。
1.3、Java应用的持久化层
在三层软件结构中,业务逻辑层不仅负责业务逻辑,而且直接访问数据库,提供对业务数据的保存、更新、删除和查询操作。为了把数据访问细节(指的是应用程序代码中生成恰当的SQL语句,然后通过JDBC API访问数据库,对数据进行保存、更新、删除或查询操作)和业务逻辑分开,可以把数据访问作为单独的持久化层
目前在持久化层领域,已经出现了许多优秀的ORM(对象——关系映射)软件,Hibernate就是一种越来越受欢迎的开发源代码的ORM软件。ORM软件具有中间件的特性,中间件是在应用程序和系统之间的连接管道,Hibernate可以看成是连接Java应用和关系数据库的管道
Hibernate作为中间件,可以为任何一个需要访问数据库的Java应用服务,显示了Hibernate的通用性,中间件的另一个特点是透明性,作为Hibernate的使用者,无需关心它是如何实现的,只需知道如何访问它的接口就行了
2、软件的模型
在软件开发领域,模型用来表示真实世界的实体。在软件开发的不同阶段,需要为目标系统创建不同类型的模型。在分析阶段,需要创建概念模型。在设计阶段,需要创建 数据模型和域模型
2.1、概念模型
在建立模型之前,首先要对问题域进行详细的分析,确定用例,接下来就可以根据用例来创建概念模型。概念模型用来模拟问题域中的真实实体。概念模型描述了每个实体的概念和属性,以及实体之间的关系,并不描述实体的行为
创建概念模型的目的是帮助更好的理解问题域,识别系统中的实体,这些实体在设计阶段很有可能变为类。
2.2、关系数据模型
到目前为止,关系数据库仍然是使用最广泛的数据库,它存储的是关系数据。
关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构,它由以下内容组成:
一个或多个表
表的所有索引
视图
触发器
表与表之间的参照完整性
通常,一个实体对应一个表,表通过主键来保证每条记录的惟一性,表的主键应当不具有任何业务含义,因为任何有业务含义的列都有改变的可能性。关系数据库学的最重要的一个理论就是:不要给关键字赋以任何业务含义。
为了使表的主键不具有任何业务含义,一种解决方法是使用代理主键,例如为表定义一个不具有任何业务含义的ID字段,专门作为表的主键
对于实体和实体之间的关系,可以通过表与表之间的参照完整性来实现
2.3、域模型(面向对象)
概念模型是在软件分析阶段创建的,它帮助开发人员对应用的需求获得清晰准确的理解,在软件设计阶段,需要在概念模型的基础上创建域模型,域模型是面向对象的。
域模型由域对象和域对象之间的关系组成
2.3.1、域对象
构成域模型的基本元素就是域对象。域对象,是对真实世界的实体的软件抽象,域对象还可以叫做业务对象,域对象可以代表业务领域中的人、地点、事务或概念
域对象分为:实体域对象、过程域对象、事件域对象
实体域对象:实体域对象可以代表人、地点、事物或概念。为了使实体域对象与关系数据库中的记录对应,可以为每个实体域对象分配惟一的OID,OID是关系数据库中的主键在实体域对象中的等价物
过程域对象:过程域对象代表应用中的业务逻辑或流程
事件域对象:事件域对象代表应用中的一些事件(如异常、警告或超时),这些事件通常由系统中某种行为触发
在三层应用结构中,以上三种域对象都位于业务逻辑层,实体域对象是应用的业务数据在内存中的表现形式,而过程域对象用于执行业务逻辑
2.3.2、域对象之间的关系
在域模型中,类之间存在四种关系
1、关联
关联指的是类之间的引用关系,这是实体域对象之间最普遍的一种关系。关联可分为一对一,一对多和多对多关联。如果类A和类B关联,那么被引用的类B将定义为类A的属性
2、依赖
依赖指的是类之间的访问关系。如果类A访问类B的属性或方法,或者类A负责实例化类B,那么可以说类A依赖于类B。和关联关系不同,无需把类B定义为类A的属性。依赖关系在实体域对象之间不常见,但是过程域对象往往依赖实体域对象,因为过程域对象会创建实体域对象,或者访问实体域对象的属性及方法。
3、聚集
聚集指的是整体与部分之间的关系,在实体域对象之间也很常见
聚集关系和关联关系在类的定义上有相同的形式,不过两者有不同的语义,对于聚集关系,部分类的对象不能单独存在,他的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。对于存在关联关系的两个类,可以允许每个类的对象都单独存在
4、泛化(Generalization
泛化指的是类之间的继承关系
3、域对象的持久化概念
当实体域对象在内存中创建后,它们不可能永远存在。最后,他们要么在内存中清除,要么被持久化到数据库中。内存无法永久的保存数据,因此必须对实体域对象进行持久化
并不是所有的域对象都需要持久化,通常只有实体域对象才需要持久化,另外有些实体域对象也不需要进行持久化
狭义的理解,“持久化”仅仅指把域对象永久保存到数据库中,广义的理解,“持久化”包括和数据库相关的各种操作
保存:把域对象永久的保存到数据库中
更新:更新数据库中域对象的状态
删除:从数据库中删除一个域对象
查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库中加载到内存中
加载:根据特定的OID,把一个域对象加载到内存中
3.1、直接通过JDBC API来持久化实体域对象
实体域对象的持久化最终必须通过数据访问代码来实现。Java应用访问数据库的最直接的方式就是直接访问JDBC API。Java.sql包提供了JDBC API,程序员可以通过它编写访问数据库的程序代码。在java.sql包中常用的接口和类包括以下内容
DriverManager:驱动程序管理器,负责创建数据库连接
Connection:代表数据库连接
Statement:负责执行SQL语句
PreparedStatement:负责执行SQL语句,具有预定义SQL语句的功能
ResultSet:代表SQL查询语句的查询结果集
3.2、ORM简介
对象关系映射模式指的是在单个组件中负责所有实体域对象的持久化,封装数据访问细节。ORM采用元数据来描述对象——关系的映射细节,使得ORM中间件能在任何一个Java应用的业务逻辑层和数据库层之间充当桥梁
3.2.1、对象——关系映射的概念
ORM解决的主要问题就是对象——关系的映射。域模型和关系模型都分别建立在概念模型的基础上。域模型是面向对象的,而关系数据模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录
但是域模型与关系模型之间存在许多不匹配之处,ORM中间件需要采用各种映射方案,来建立两种模型之间的映射关系
3.2.2、ORM中间件的基本使用方法
ORM中间件采用元数据来描述对象——关系映射细节,元数据通过采用XML格式,且存放在专门的对象——关系映射文件中。如果希望把ORM软件集成到自己的Java应用中,用户首先要配置对象——关系映射文件。不同ORM软件的元数据的语法不一样
只要配置了持久化类与表的映射关系,ORM中间件在运行时就能参照映射文件的信息,把域对象持久化到数据库中
3.2.3、Hibernate API简介
应用程序可以直接通过Hibernate API访问数据库。Hibernate提供的接口可以分为以下几类:
提供访问数据库的操作的接口。这些接口包括:Session、Transaction和Query接口
用于配置Hibernate的接口:Configuration
回调接口,使应用程序接受Hibernate内部发生的事件,并作出相关的回应。这些接口包括:Interceptor、Lifecycle和Validatable接口
用于扩展Hibernate功能的接口,如:UserType、CompositeUserType接口。如果需要的话,应用程序可以扩展这些接口
Hibernate内部封装了JDBC、JTA、JNDI。JDBC提供底层的数据访问操作,只要用户提供了相应的JDBC驱动程序,Hibernate可以访问任何一个数据库系统。JNDI和JTA使Hibernate能够和J2EE服务器集成
分享到:
评论

相关推荐

    Java对象持久化技术概述

    ### Java对象持久化技术概述 #### 一、Java对象持久化技术概览 Java对象持久化技术是指将Java对象的状态保存到外部存储介质的过程。这种技术对于任何基于Java的应用程序都至关重要,因为它允许应用程序在断电或...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式...

    (高清版)精通 Hibernate_Java 对象持久化技术详解(第2版).pdf

    ### 知识点二:Java对象持久化的概念与实现 - **概念**:对象持久化是指将程序中的对象状态保存到外部存储介质的过程,以便在系统重启后仍然可以恢复这些对象的状态。 - **实现方式**:在Java中,常见的对象持久化...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

    第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

    第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

    第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式...

    精通Hibernate:Java持久化对象技术详解[第二版]

    《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...

    精通Hibernate:对象持久化技术第二版part3

    第2章 Java对象持久化技术概述 21 业务数据在内存中表现为实体域对象形式,而在关系数据库中表现为关系数据形式。数据访问代码负责把实体域对象持久化到关系数据库中。 2.1 直接通过JDBC API来持久化实体域对象 21...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    第2章 Java对象持久化技术概述 21 业务数据在内存中表现为实体域对象形式,而在关系数据库中表现为关系数据形式。数据访问代码负责把实体域对象持久化到关系数据库中。 2.1 直接通过JDBC API来持久化实体域对象 21...

    Hibernate 操纵持久化对象

    在Hibernate中,持久化对象是指具有与数据库表相对应状态的Java对象。一旦一个对象被持久化,它就处于Hibernate的管理之下,其生命周期将与数据库记录绑定。Hibernate提供了四种对象状态:瞬时态、持久态、脱管态和...

    精通hibernate3.0--java数据库持久层开发实践(付京周)2

    Hibernate是一种流行的Java持久化框架,它简化了Java应用与关系型数据库之间的交互过程。通过提供对象关系映射(Object-Relational Mapping,ORM)功能,Hibernate允许开发者用面向对象的方式处理数据库数据,而无需...

    hibernate持久化技术在网上购书系统中的设计与实现毕业论文设计.doc

    Hibernate的持久化功能是其最重要的功能之一,它可以将Java对象持久化到关系数据库中,从而使得数据可以长期保存。Hibernate的持久化功能主要通过以下几个步骤来实现: * 对象关系映射:将Java对象映射到关系数据库...

    EJB3_JPA对象持久化文档

    ### EJB3_JPA对象持久化文档 #### JPA概述 **JPA**(Java Persistence API)是由Sun Microsystems推出的用于Java应用程序的数据持久化标准。它为开发者提供了一种灵活高效的方式来处理应用程序与底层数据存储之间...

    HIBERNATE - 符合Java习惯的关系数据库持久化

    通过将Java对象模型映射到关系型数据库表上,Hibernate为数据持久化提供了强大的支持,同时保持了代码的简洁性和可维护性。 #### 二、权限与配置 在部署Hibernate之前,必须确保具备适当的权限,并进行正确的配置...

    Hibernate 对象持久化

    它通过将Java类映射到数据库表,实现了对象持久化,使得开发者可以像操作普通Java对象一样处理数据库中的数据,从而降低了对SQL的依赖。 **一、Hibernate概述** Hibernate是由Jboss公司开发的一个开放源代码的对象...

    第1讲 Java EE技术概述

    ### 第1讲 Java EE技术概述 #### 一、Java 平台分类及概述 Java 平台由 Sun 公司开发,并根据不同应用领域分为三个主要版本:Java SE(标准版)、Java EE(企业版)和 Java ME(微型版)。这三个版本各自针对不同...

    对象持久化技术Hibernate的应用研究.pdf

    #### 二、对象持久化技术Hibernate概述 ##### 2.1 Hibernate简介 Hibernate是一个开源的ORM框架,它提供了轻量级的对象封装,使得开发者可以更加方便地使用面向对象的方式操作数据库。Hibernate的主要优势在于其...

    大学毕业论文-—hibernate持久化技术在网上购书系统中的设计与实现.doc

    Hibernate的持久化功能可以将Java对象持久化到数据库中,实现数据的持久化和高性能的数据访问。 六、Hibernate的优化技术 Hibernate提供了多种优化技术,例如缓存机制、批处理机制、懒加载机制等。这些技术可以...

Global site tag (gtag.js) - Google Analytics