精通Hibernae读书笔记1

来源:互联网 发布:学校网络思想政治教育 编辑:程序博客网 时间:2024/04/29 06:51

 第一章 java应用分层架构及技术模型

1 hibernate是什么

 A 它是连接java应用程序和关系数据库的中间件

 B 它对JDBCAPI进行了封装,负责java对象的持久化

 C 对分层的软件架构中它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑

 D 它是一种ORM映射工具,能够建立面向对象的领域模型和关系数据库模型直接的映射

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

 

 

 

 

 

 

 

 

 

三层应用程序

A表现层:提供与用户交互的界面。GUI(Graphical User Interface,图形用户界面)和基于浏览器的Web页面时表述层的两个典型的例子。

B业务逻辑层:实现各种业务逻辑。

C数据层:负责存放和管理应用的持久化业务数据

1.1.1区分物理层和逻辑层

  1。物理分层即每一层都运行在网络的单独的机器的单独节点上,意味着创建分布式软件系统

  2。逻辑分层:指的每一层有一个相对独立的软件模块来实现,它能完成特定的功能。

1.1.2软件层的特征

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

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

  C每个层对上层公开API,但具体的实现细节对外透明

基本特征就是层与层之间存在自上而下的依赖关系

软件层向上公开接口封转实现细节

1.1.3软件分层的优点

1.伸缩性

     伸缩性指应用程序是否能支持更多的用户。应用的层越少,可以增加资源(如CPU和内存)的地方就越少。层数越多,可以将每层分布在不同的机器上

2.可维护性

     可维护性指的是当发生需求变化,只需修改软件的某一部分,不会影响其他部分的代码。

3.可扩展性

     可扩展性指的是在现有系统中增加新功能的难易程度。层数越多,就可以在每个层中提供扩展点,不会打破应用的整体框架。

4.可重用性

     可重用性指的是程序代码没有冗余,同一个程序能满足多种需求。例如,业务逻辑层可以被多种表述层共享。

5.可管理性

     可管理性指的是管理系统的难易程度。将应用程序分为多层后,可以将工作分解给不同的开发小组,从而便于管理。应用越复杂,规模越大,需要的层就越多。

 

1.1.4软件分层的缺点

对开发人员的要求越来越高;调试困难

1.1.5Java应用的持久化层

1.2软件的模型

在软件开发领域,模型用来表示真实世界的实体。

在软件开发的不同阶段,需要为目标系统创建不同类型的模型:

在分析阶段,需要创建概念模型。

在设计阶段,需要创建域模型和数据模型。

模型之间的关系

1.2.1概念模型

概念模型用来模拟问题域中的真实实体。

概念模型描述了每个实体的概念和属性,以及实体之间的关系。

概念模型并不描述实体的行为。

不管是技术人员还是非技术人员都能看得懂概念模型,他们可以很容易的提出模型中存在的问题,帮助系统分析人员及早对模型进行修改。

实体与实体之间存在三种关系

CustomerOrder实体: 一对多。一个客户有多个订单,而一个订单只能属于一个客户。

CategoryItem实体:多对多。一个商品类别包含多个商品,而一个商品可以属于多个商品类别。

OrderItem实体:多对多。一个订单包含多个商品,而一个商品可以属于多个订单。

CustomerShoppingCart实体:一对多。一个客户有多个购物车,而一个购物车只能属于一个客户

ShoppingCartItem实体:多对多。一个购物车包含多个商品,而一个商品可以属于多个购物车。

1.2.2关系数据模型

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

一个或多个表

表的所有索引

视图

触发器

表与表之间的参照完整性

 

表的主键

在关系数据库表中,用主键来识别记录并保证每条记录的惟一性。作为主键的字段必须满足以下条件:

不允许为null

每条记录具有惟一的主键值,不允许主键值重复。

每条记录的主键值永远不会改变。

使用代理主键机制,代理主键不具有业务含义,不会被改变。

1.2.3域模型

域模型是面向对象的。在面向对象术语中,域模型也可称为设计模型。域模型由以下内容组成:

具有状态和行为的域对象

域对象之间的关系

关联

依赖

聚集

一般化

1.2.4域对象

域对象可以代表业务领域中的人、地点、事物或概念。域对象分为以下几种:

实体域对象:业务领域的名词

过程域对象:业务领域的动词

事件域对象:业务领域中的事件

 1。实体域对象

实体对象可以代表人、地点、事物或概念。例如客户、订单、商品等作为实体域对象。

Java EE应用中,这些名词可以作为实体EJB

对于普通的Java应用,这些名词可以作为包含状态和行为的JavaBean。采用JavaBean形式的实体域对象也称为POJOPlain Old Java Object)。

为了使实体域对象与关系数据库表中记录对应,可以为每个实体域对象分配惟一的OIDObject Identifier,即对象标识符),OID是关系数据库表中的主键(通常为代理主键)在实体域对象中的等价物。

2.过程域对象

过程域对象代表应用中的业务逻辑或流程。它们通常依赖于实体域对象。

可以把业务领域中的动词,例如客户发出订单、登入应用等作为过程域对象。

Java EE应用中,它们通常作为会话EJB或者消息驱动EJB

在非Java EE应用中,它们可作为常规的JavaBean,具有管理和控制应用的行为。

过程域对象也可以拥有状态,例如在J2EE应用中,会话EJB可分为有状态和无状态两种类型。

3事件域对象

事件域对象代表应用中的一些事件(如异常、警告或超时)。这些事件通常由系统中的某种行为触发。

例如在多用户环境中,当一个客户端程序更新了某种实时数据,服务器端程序会创建一个事件域对象,其他正在浏览相同数据的客户端程序能够接受到这一事件域对象,随即同步刷新客户界面

1.2.5域对象之间的关系

关联(Association):指类的引用关系,包括一对一,一对多,多对多

依赖(Dependency):类的访问关系。往往出现在过程域对象依赖实体域对象

聚集(Aggregation):是指整体与部分之间的关系,在实体域对象之间是常见的。

一般化(Generalization) :一般化指的是类之间的继承关系

1.2.6域对象的持久化概念

域对象的持久化概念

狭义的理解,“持久化”仅仅指把域对象永久保存到数据库中

广义的理解,“持久化”包括和数据库相关的各种操作:

保存:把域对象永久保存到数据库中。

更新:更新数据库中域对象的状态。

删除:从数据库中删除一个域对象。

加载:根据特定的OID,把一个域对象从数据库加载到内存中。

查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载到内存中。

原创粉丝点击