千山万水之Hibernate(一)——对象持久化

在学习完三层后,随着学习和工作,逐渐体会到了软件分层的重要性,特别是在面向对象大行其道的今天,我们开发项目,不得不考虑我们的系统该如何分层。三层算是给我们的理论思想给予了基本的指导,但到实际应用之前,也很需要我们进行更加丰富的理论补充。
随着经历、经验的不断增加,也随着知识之间相互的关联碰撞,java方向上软件设计也会碰到越来越多内容,一些名词、一些技术点、一些指导的理论常常会混在一起,在学习Hibernate的过程中,也饿补了一下相关的内容,今天我们就在真正总结Hibernate之前先介绍一些它周边的理论知识。

软件模型

千山万水之Hibernate(一)——对象持久化_第1张图片

概念模型:在分析阶段建立的模型,也就是我们平时所说的实体类,实体类的分析是为了帮助我们对需求认识的更加清晰。
域模型/设计模型:在软件的设计阶段,描述域对象(DomainObject/BO)及其之间关系,分为实体域对象、过程域对象、事件域对象。域对象之间关系分为关联、依赖、聚合、一般化。
再来说数据域对象,我们可以把它看作数据库中存储的数据及其之间关系。

对于以上这些概念,其实是不陌生的,概念模型可对应我们的用例图、实体类图等,域对象理解为我们的业务逻辑层上的模型。域对象便是业务逻辑层的一些对象(这里我们将实体类也看做了是属于业务逻辑层),其之间关系更是我们在UML阶段所熟悉也必须要弄明白的那些基本关系。大的方面上概念模型是域模型和数据模型的基础。

持久化

我们在学习三层的时候,了解了DAL的职责:封装数据访问细节,而对于“持久化”起初也仅仅是有一个模糊的理解:将我们内存中的数据保存到数据库。后来慢慢的认识到,这样的理解不可以说是不对,只可以说是狭义的,其实持久化并没有想的那么复杂,广义的理解是和DAL的职责一样的。在我们平时的交流中我们可以使用“持久化”来表达我们的以上两种任意一种想法。
好了,在理解了持久化,我们再来看java上是如何实现持久化的。主要分为以下几类:
千山万水之Hibernate(一)——对象持久化_第2张图片

ORM:这里的ORM所指的是一种模式-“单个组件中负责所有实体域对象的持久化,封装数据访问细节”,它又分为两种形式——硬编码和中间件,他们的共同点是将数据访问作为单独的一层处理。
主动域对象——实体域对象的一种形式,也就是将数据访问细节放到了实体类中,这样也达到了分层的效果,但实体类中仍然存在SQL语句
JDO不是单纯的对象关系映射接口,它支持把对象持久化到任意一种存储系统中。

    对于Hibernate,实际上是实现ORM的一种中间件形式,通过使用Hibernate,我们可以更专注于应用面向对象的思维来操作数据库。Hibernate的优缺点总结如下:
优点
    提高生产力
    使开发更加对象化
    可移植性
    没有侵入性,支持透明持久化
缺点
    使用DB特性的语句,将很难调优
    对大批量数据更新存在问题
    系统中存在大量的统计查询功能,不太合适

总结
以上内容主要介绍了软件开发的一些相关的分层思想、涉及到的模式等,明白了这些,再学习Hibernate,我们可以更好的清楚Hibernate的位置,Hibernate中基本的概念,以及与它相关的技术。为后面更深入的研究、学习、使用Hibernate指导一个方向。

你可能感兴趣的:(Hibernate,开发,技术,软件,关联)