精通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概念模型
概念模型用来模拟问题域中的真实实体。
概念模型描述了每个实体的概念和属性,以及实体之间的关系。
概念模型并不描述实体的行为。
不管是技术人员还是非技术人员都能看得懂概念模型,他们可以很容易的提出模型中存在的问题,帮助系统分析人员及早对模型进行修改。
实体与实体之间存在三种关系
Customer和Order实体: 一对多。一个客户有多个订单,而一个订单只能属于一个客户。
Category和Item实体:多对多。一个商品类别包含多个商品,而一个商品可以属于多个商品类别。
Order和Item实体:多对多。一个订单包含多个商品,而一个商品可以属于多个订单。
Customer和ShoppingCart实体:一对多。一个客户有多个购物车,而一个购物车只能属于一个客户
ShoppingCart和Item实体:多对多。一个购物车包含多个商品,而一个商品可以属于多个购物车。
1.2.2关系数据模型
关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构,它由以下内容组成:
一个或多个表
表的所有索引
视图
触发器
表与表之间的参照完整性
表的主键
在关系数据库表中,用主键来识别记录并保证每条记录的惟一性。作为主键的字段必须满足以下条件:
不允许为null。
每条记录具有惟一的主键值,不允许主键值重复。
每条记录的主键值永远不会改变。
使用代理主键机制,代理主键不具有业务含义,不会被改变。
1.2.3域模型
域模型是面向对象的。在面向对象术语中,域模型也可称为设计模型。域模型由以下内容组成:
具有状态和行为的域对象
域对象之间的关系
关联
依赖
聚集
一般化
1.2.4域对象
域对象可以代表业务领域中的人、地点、事物或概念。域对象分为以下几种:
实体域对象:业务领域的名词
过程域对象:业务领域的动词
事件域对象:业务领域中的事件
1。实体域对象
实体对象可以代表人、地点、事物或概念。例如客户、订单、商品等作为实体域对象。
在Java EE应用中,这些名词可以作为实体EJB。
对于普通的Java应用,这些名词可以作为包含状态和行为的JavaBean。采用JavaBean形式的实体域对象也称为POJO(Plain Old Java Object)。
为了使实体域对象与关系数据库表中记录对应,可以为每个实体域对象分配惟一的OID(Object Identifier,即对象标识符),OID是关系数据库表中的主键(通常为代理主键)在实体域对象中的等价物。
2.过程域对象
过程域对象代表应用中的业务逻辑或流程。它们通常依赖于实体域对象。
可以把业务领域中的动词,例如客户发出订单、登入应用等作为过程域对象。
在Java EE应用中,它们通常作为会话EJB或者消息驱动EJB。
在非Java EE应用中,它们可作为常规的JavaBean,具有管理和控制应用的行为。
过程域对象也可以拥有状态,例如在J2EE应用中,会话EJB可分为有状态和无状态两种类型。
3事件域对象
事件域对象代表应用中的一些事件(如异常、警告或超时)。这些事件通常由系统中的某种行为触发。
例如在多用户环境中,当一个客户端程序更新了某种实时数据,服务器端程序会创建一个事件域对象,其他正在浏览相同数据的客户端程序能够接受到这一事件域对象,随即同步刷新客户界面
1.2.5域对象之间的关系
关联(Association):指类的引用关系,包括一对一,一对多,多对多
依赖(Dependency):类的访问关系。往往出现在过程域对象依赖实体域对象
聚集(Aggregation):是指整体与部分之间的关系,在实体域对象之间是常见的。
一般化(Generalization) :一般化指的是类之间的继承关系
1.2.6域对象的持久化概念
域对象的持久化概念
狭义的理解,“持久化”仅仅指把域对象永久保存到数据库中
广义的理解,“持久化”包括和数据库相关的各种操作:
保存:把域对象永久保存到数据库中。
更新:更新数据库中域对象的状态。
删除:从数据库中删除一个域对象。
加载:根据特定的OID,把一个域对象从数据库加载到内存中。
查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载到内存中。
- 精通Hibernae读书笔记1
- 精通Hibernae读书笔记2
- 精通Spring2.0读书笔记(1)
- 精通Visual C++图象编程----读书笔记1
- 《JavaWeb从入门到精通》读书笔记(1)
- 精通Apache Flink读书笔记--1、2
- 《精通正则表达式》读书笔记
- 《精通javascript》-----------------------读书笔记
- 精通Apache Flink读书笔记
- 《精通CSS》读书笔记2
- 精通正则表达式读书笔记
- 读《精通springmvc4》读书笔记
- Hibernae 延迟加载
- Hibernae 延迟加载
- Hibernae 的延迟加载
- 【旧】《Eclipse从入门到精通》读书笔记(1)
- 《精通正则表达式》读书笔记摘要: 第一章 入门(1)
- 《精通CSS(第2版)》读书笔记1
- What's the use of do while(0) when we define a macro?
- 网络通信(POST方式)
- VC++ 深入详解 学习笔记 窗口外观编程
- const详细分析
- PHP不能用面向对象方式连接数据库是什么原因
- 精通Hibernae读书笔记1
- 英语语法简介-句子结构
- 探讨了提高MySQL 数据库性能的思路,并从8个方面给出了具体的解决方法。
- 转贴 CxImage类库使用说明
- VC++中,什么是ATL,STL,SDK?推荐几本学习教材
- 垃圾回收系列(1):没有GC,世界将会怎样
- HttpClient 联网接口
- 垃圾回收系列(2):几种经典的垃圾回收算法
- 垃圾回收系列(3):CLR与JVM垃圾回收器的比较