1. Java对象持久化概述

1.          Java对象持久化概述

1.1.  应用程序的分层体系结构

1.1.1.  基于B/S的典型三层架构[t1] 

说明:

1, 展现层:提供与用户交互的界面。

2, 业务逻辑层:实现各种业务逻辑。

3, 数据访问层:负责存放和管理应用程序的持久化业务数据。

软件的层必须具备如下特征:

1,  每个层由一组相关的类或组件构成, 共同完成特定的功能。

2,  层与层之间存在自上而下的依赖关系,即上层组件访问下层组件的 API,而下层组件不应该依赖上层组件。


数据访问层与Hibernate在Java应用程序中的角色

数据访问层(持久化层)封装了数据访问的细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该达到的目标:

1, 代码重用性高,可完成所有的数据访问操作。

2, 如果需要的话,能够支持多种数据库平台。

3, 具有相对独立性,当持久化层变化时,不会影响上层实现。

在数据访问层(持久化层)中可以使用Hibernate框架以实现要求,如下图所示:

1.2.       软件模型

1.2.1.  各种模型的说明

概念模型[t2] 

模拟问题域中的真实实体。描述每个实体的概念和属性及实体间关系。不描述实体行为。实体间的关系有一对一、一对多和多对多。。

关系数据模型:

在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构。有以下内容组成:

1, 若干表

2, 表的所有索引

3, 视图

4, 触发器

5, 表与表之间的参照完整性

域模型:

在软件的分析阶段创建概念模型,在软件设计阶段创建域模型。

组成部分:

1, 具有状态和行为的域对象。

2, 域对象之间的关联。

域对象(domainobject):

构成域模型的基本元素就是域对象。对真实世界的实体的软件抽象,也叫做业务对象(Business Object,BO)。域对象可代表业务领域中的人、地点、事物或概念。

域对象分为以下几种:

1, 实体域对象:通常是指业务领域中的名词。(plain old java object,简单Java对象)。

2, 过程域对象:应用中的业务逻辑或流程。依赖于实体域对象,业务领域中的动词。如发出订单、登陆等。

3, 事件域对象:应用中的一些事件(警告、异常)。

1.2.2.  域对象间的关系

关联[t3] 

类间的引用关系。以属性定义的方式表现。

依赖[t4] 

类之间访问关系。无需定义成属性。在A中访问B中的方法或属性,或者A负责实例化B。

聚集(Aggregation):

整体与部分的关系。例人与手的关系。部分类的对象不能单独存在,他的生命周期依赖于整体类的对象的生命周期,整体消失时,部分也随之消失。

一般化(Generalization):gggg

类之间继承关系。

1.2.3.  域对象(Domain)的持久化概念

    实体域对象在内存中创建后,不能永久存在。将实体域对象永久保存起来,就是持久化的过程。通常只有实体域对象需要持久化,过程域对象和事件域对象一般不需要持久化。广义持久化指增、删、改、查。

1.3.       ORM与ORM框架

1.3.1.  ORM(Object/Relation Mapping)

对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。

ORM主要解决对象-关系的映射

面向对象概念

面向关系概念

对象

表的行(记录)

属性

表的列(字段)

ORM的实现思想:

将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。因此ORM的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。

ORM采用元数据来描述对象-关系映射细节

元数据通常采用 XML 格式,并且存放在专门的对象-关系映射文件中。

ORM中间件的使用方法

采用元数据来描述对象-关系映射细节,元数据通常采用xml格式,并存放在专门的对象-关系映射文件中。只要配置了持久化类与表的映射关系,orm中间件在运行时就能够参照映射文件的信息,把域对象持久化到数据库中。例(Hibernate):

1.3.2.  流行的ORM框架

Hibernate:

非常优秀、成熟的 ORM 框架。提供强大的对象和关系数据库映射以及查询功能。Hibernate是面向对象的程序设计语言和关系型数据库之间的桥梁,允许开发者采用面向对象的方式来操作关系数据库。

Hibernate 的目标是释放开发者通常的与数据库持久化相关的编程任务的 95%。消除那些针对特定数据库厂商的SQL代码。

 

Ibatis:

相比 Hibernate 灵活高,运行速度快。开发速度慢,不支持纯粹的面向对象操作,需熟悉sql语句,并且熟练使用sql语句优化功能。

TopLink

 

OJB

1.3.3.  Hibernate与 Jdbc 代码对比

1.4.       小结


软件的层必须具备如下特征:

1,  每个层由一组相关的类或组件构成, 共同完成特定的功能。

2,  层与层之间存在自上而下的依赖关系,即上层组件访问下层组件的 API,而下层组件不应该依赖上层组件。

概念模型描述了每个实体的得概念和属性,以及实体之间的关系:一对一、一对多和多对多

关联是类之间的一种关系,例如老师教学生,老公和老婆等就是一种关系。这种关系是非常明显的,在问题领域中通过分析直接就能得出。

如果两个元素其中一个的定义发生改变则会引起另一个元素发生变化则称这两个元素之间存在依赖关系,对于类来说,依赖可能存在于下列几种情况中:一个类要发送消息给另一个类;一个类将另一个类作为其数据的一部分;一个类的操作中将另一个类作为其参数。

猜你喜欢

转载自blog.csdn.net/too_cruel/article/details/20904801