第八章 Hibernate的入门之二

本文介绍了域对象的持久化概念及其重要性,并详细探讨了多种数据访问模式,包括业务逻辑和数据访问耦合、主动域对象模式、ORM模式、JDO模式、CMP模式等,帮助读者理解如何有效地实现数据持久化。
注:希望大家看后,请给我一点评价,无论写的怎么样,希望你们能给我支持。提出你宝贵的意见。我会继续完善。谢谢您。朋友。
 
5、域对象的持久化概念
(1)什么是持久化
     狭义的理解,“持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作。
(2)为什么要进行持久化
当实体域对象在内存中创建后,它们不可能永远存在。最后,他们要么从内存中清除,要么被持久化到数据存储库中。内存无法永久地保存数据,因此必须对实体域对象进行持久化。否则,如果对象没有被持久化,用户在应用运行时创建地订单信息将在应用结束运行后随之消失。
(3)什么域对象需要持久化
当然,并不是所有的域对象都需要持久化,通常只有实体域对象才需要持久化,另外,有些实体域对象也不需要持久化。
(4)持久化类
持久化类是指其实例需要被Hibernate持久化到数据库中的类。持久化类通常都是域模型中的实体域类,同时持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。
6、数据访问有哪些模式
1)业务逻辑层包含了业务数据和业务过程
l  实体域对象
在分层的软件结构中,业务逻辑层代表了业务数据和业务逻辑。域对象位于业务逻辑层,实体域对象代表应用运行时的业务数据,它存在于内存中,并借助于数据库实现用于存放永久性的业务数据。
业务数据在内存中表现为实体域对象形式,而在关系数据库中表现为关系数据形式。数据访问代码负责把实体域对象持久化到关系数据库中。
l  过程域对象
过程域对象代表应用的业务逻辑。
2)数据访问模式----业务逻辑和数据访问耦合
在此种模式种的过程域对象中,业务逻辑和数据访问代码混杂在一起,参见下图。
3)数据访问模式----主动域对象模式
由实体域对象负责自身的数据访问细节,这种实体域对象也被称为主动域对象,参见下图种的说明。J2EE平台中的BMP  EJB组件就是采用主动域对象模式的一种应用示例。
4)数据访问模式----ORM模式
在此种模式中,采用在单独的持久化层由ORM中间件封装数据访问细节,参见下图。而ORM中间件提供对象---关系映射服务,当向数据库保存一个域对象时,把业务数据由对象形式映射为关系数据形式;当从数据库加载一个域对象时,把业务数据由关系数据形式映射为对象形式。
5)数据访问模式---- JDO模式
Java Data ObjectsJDO)是SUN公司制定的描述对象持久化语义的标准API。因此采用JDO模式时,整个应用为四层应用结构,参见下图所示。
严格的说,JDO并不是对象-关系映射接口,因为它支持把对象持久化到任意一种存储系统中,包括: 关系数据库和面向对象的数据库。
 
6)数据访问模式----CMP模式
J2EE架构中,CMPContainer-managed Persistence)表示由EJB容器来管理实体EJB的持久化,EJB容器封装了对象-关系的映射以及数据访问细节。
CMPORM的相似之处在于,两者都提供对象-关系映射服务,都把对象持久化的任务从业务逻辑程序中分离出来;区别在于CMP负责持久化实体EJB组件,而ORM负责持久化POJO,它是普通的基于Java Bean形式的实体域对象。
CMPORM相比,前者有以下不足:
l  开发人员开发的实体EJB必须遵守复杂的J2EE规范,而多数ORM中间件不强迫域对象必须满足特定的规范。
l  实体EJB只能运行在EJB容器中,而POJO可以运行在任何一种Java环境中。
l  目前,对于复杂的域模型,EJB容器提供的对象-关系映射能力很有限。相比之下,许多ORM中间件提供了完善的对象-关系映射服务。
l  尽管按照J2EE的规范,EJB应该是一种可移植的组件,实际上却受到很大限制。因为不同厂商生产的CMP引擎差异很大,它们使用的对象-关系映射元数据各不相同,使得EJB不能顺利的从一个EJB容器移植到另一个EJB容器中。
使用ORM中间件就不存在这样的问题,以Hibernate为例,它可以无缝集成到任何一个Java系统中。在Java软件架构领域,在出现基于CMP的实体EJB之前,基于JavaBean形式的实体域对象早就存在了。但是把基于JavaBean形式的实体域对象称为POJO,却是最近才发生的事。
POJOPlain Old Java Object----又普通又古老的Java对象),它和基于CMP的实体EJB相比,既简单,又具有很高的可移植性,因此联合使用ORM映射工具和POJO,已经成为一种越来越受欢迎的,用于取代CMP的持久化方案。
 
今天先写到这,后面的内容以后再写。。。。。









本文转自 weijie@java 51CTO博客,原文链接:http://blog.51cto.com/weijie/66461,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值