`
jiang5495
  • 浏览: 93017 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Java持久化深度理解(转载)

阅读更多
 java中常用域对象持久化技术的比较  
  目前java中共有5种常用的实现持久化的模式:  
    1 jdbc直接访问数据库  
    2 主动域对象模式  
    3 cmp模式  
    4 orm模式  
    5 jdo模式 

1、 jdbc实现数据库访问的方式是在业务方法中直接嵌入sql语句,sql语句是面向关系的,依赖于关系模型。所以jdbc方式的优点是简单直接,特别是对于小型应用十分方便。  
但是jdbc这种实现方式也给应用程序带来以下缺点:  
(1)、实现业务逻辑的代码和数据库访问代码掺杂在一起,使程序结构不清晰,可读性差。  
(2)、在程序代码中嵌入面向关系的sql语句,使开发人员不能完全运用面向对象的思维来编写程序。  
(3)、业务逻辑和关系数据模型绑定,如果关系数据发生变化,必须手工修改代码中所有相关的sql语句,这曾经了维护软件的难度。  
(4)、如果程序代码中sql语句包含语法错误,在编译时不能检查这种错误,只有在运行时才能发现这种错误,这增加了调试程序的难度。  
正是由于上述的缺点,为了使业务逻辑和数据访问细节分离,出现了下面的几种模式。  

2、主动域对象模式  
主动域对象是实体域对象的一种形式,它在实现中封装了关系数据模型和数据访问的细节。在 j2ee 架构中,ejb组件分为会话ejb和实体ejb。会话ejb通常实现业务逻辑,而实体ejb表示业务实体。实体ejb又分为两种:由ejb本身管理持久化,即bmp(bean-managed persistence);由ejb容器管理持久化,即cmp(container-managed persistence)。bm p就是主动域对象模式的一个例子,bmp 表示由实体 ejb 自身管理数据访问细节。  
主动域对象模式有以下优点:  
(1)、在实体域对象中封装自身的数据访问细节,过程域对象完全负责业务逻辑,使程序结构更加清晰。  
(2)、如果关系数据模式发生变化,只需要修改主动域对象的代码,不需要修改过程域对象的业务方法。  
主动域对象模式有以下缺点:  
(1)、在实体域对象的实现中仍然包含sql语句。  
(2)、每个实体域对象都负责自身的数据访问实现。把这一职责分散在多个对象中,这会导致实体域对象重复实现一些共同的数据访问操作,从而造成重复编码。  
主动域对象本身位于业务逻辑层,因此采用主动域对象模式时,整个应用仍然是三层应用结构,并没有从业务逻辑层分离出独立的持久化层。  
3.cmp模式  
在j2ee架构中,cmp(container-managed persistence)表示由ejb容器来管理实体ejb 的持久化,ejb容器封装了对象-关系的映射及数据访问细节。cmp 和orm的相似之处在于,两者都提供对象-关系映射服务,都把对象持久化的任务从业务逻辑中分离出来。区别在于cmp负责持久化实体ejb组件,而orm负责持久化 pojo,它是普通的基于 java bean 形式的实体域对象。  
cmp模式的优点在于:  
(1)、他是基于ejb技术,是sun j2ee体系的核心部分,获得了业界的普遍支持,包括各大厂商和开源组织等。如果选择它作企业级开发,技术支持会非常完备。  
(2)、功能日趋完善,包括了完善的事务支持,ejbql查询语言,透明的分布式访问等等  
cmp模式的缺点在于:  
(1)、开发人员开发的实体必须遵守复杂的j2ee规范,而多少orm中间件没有类似要求。  
(2)、实体域ejb只能运行在ejb容器中,而pojo可以运行在任何一种java环境中。  
(3)、尽管按照j2ee的规范,ejb应该是一种可移植组件,实际应用时确受到很大限制。而orm中间件就不存在这样的问题。  
4.orm模式  
orm-object/relational mapper,即“对象-关系型数据映射组件”。对于o/r,即 object(对象)和 relational(关系型数据),表示必须同时使用面向对象和关系型数据进行开发。建模领域中的 orm 为 object/role modeling(对象角色建模)。另外这里是“o/r mapper”而非“o/r mapping”。相对来讲,o/r mapping 描述的是一种设计思想或者实现机制,而 o/r mapper指以o/r原理设计的持久化框架(framework),包括 o/r机制、sql自生成、事务处理和cache管理等。  
一般把基于 java bean 形式的实体域对象称为 pojo(plain old java object),意为又普通又古老的 java 对象的意思。随着各种 orm 映射工具的日趋成熟和流行,pojo有重现光彩,它和基于 cmp 的实体 ejb 相比,既简单又具有很高的可移植性,因此联合使用orm 映射工具和 pojo,已经成为一种越来越受欢迎的且用来取代 cmp 的持久化方案。pojo的缺点就是无法做远程调用,不支持分布式计算。  
常用的orm中间件有:hibernate、apache ojb、cayenne、jaxor、toplink等。其中 hibernate 的轻量级 orm 模型逐步确立了在 java orm 架构中领导地位,甚至取代复杂而又繁琐的 ejb 模型而成为事实上的 java orm 工业标准。而且其中的许多设计均被 j2ee 标准组织吸纳而成为最新 ejb 3.0 规范的标准。  
5.jdo模式  
jdo是近几年新兴的数据持久性技术,java data objects(jdo)是 sun 公司制定的描述对象持久化语义的标准api。严格的说,jdo 并不是对象-关系映射接口,因为它支持把对象持久化到任意一种存储系统中,包括关系数据库、面向对象的数据库、基于xml的数据库,以及其他专有存储系统。由于关系数据库是目前最流行的存储系统,许多jdo的实现都包含了对象-关系映射服务。 jdo模式的优点是:  
(1)、简单易用,不需要写大量无用的接口,不需要继承什么特殊的类,唯一所要做的就是对你的class文件做一下enhance。  
(2)、真正面向对象。用了jdo的java程序是真正的面向对象,无需再理会数据库里面有什么表格,存取都是以java object为对象,所有数据库表格都是自动生成的。  
(3)、方便的数据库移植。应用程序换数据库时候除了换一个jdbc driver, 换一下数据库url,无需对程序做任何改动。  
jdo模式的缺点是:  
由于是新兴技术,一些it巨头还没有给予足够的支持,其中包括ibm、oracle、bea。  
四. 总结  
关于这些技术优劣之争从它们刚刚出生那天起从来就没有停止过,而各家各派也从来没有能够说服过对方。对于应用开发者而言,撇开应用纯粹来争论技术优劣并没有多大意义。没有最好的,只有最合适的。在做开发的时候能够选择一个最合适于自己应用的技术,那就足够了。总的来说,jdbc面向rdbms,比较适合关系数据库模式驱动的应用,例如统计表格数据,生成报表之类的应用。ejb 技术以j2ee应用服务器为中心,如果应用确实需要灵活的可声明的事务边界,需要支持大容量的访问和不间断的服务,需要应用服务器的集群,那么选ejb吧。jdo则面向对象,对于以域对象为中心的应用,包含图,树模型的应用,jdo是首选。 

分享到:
评论

相关推荐

    java持久化的解决方案

    ### Java持久化的解决方案详解 #### 引言:信息载体与持久化需求 在软件工程领域,数据持久化是一项至关重要的技术,它确保了应用程序在不同会话之间或系统重启后仍能保持数据的一致性和完整性。Java作为一种广泛...

    一个简单的java持久化类

    首先,我们需要理解Java持久化的基础。在Java中,JDBC是最常见的持久化技术之一,它允许我们与各种类型的数据库进行交互。当我们执行一个SQL查询后,数据库会返回一个ResultSet对象,其中包含了查询的所有结果行。...

    Java对象持久化技术概述

    ### Java对象持久化技术概述 #### 一、Java对象持久化技术概览 Java对象持久化技术是指将Java对象的状态保存到外部存储介质的过程。这种技术对于任何基于Java的应用程序都至关重要,因为它允许应用程序在断电或...

    JPA 教程 Java 持久化教程

    JPA 教程 Java 持久化教程 JPA(Java Persistence API)是一种 Java 標準的 ORM(Object-Relational Mapping)规范,用于將 Java 对象持久化到数据库中。下面是 JPA 的一些重要知识点: ### 1. JPA 概述 JPA 是 ...

    精通Hibernate:Java持久化对象技术详解[第二版]

    《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...

    java持久化工具类:JavaBean与XML

    在Java开发中,持久化是将数据保存到可持久存储设备(如数据库)中的过程,以便在程序关闭后还能保留这些数据。JavaBean和XML在Java持久化中扮演着重要角色。...这对于理解Java持久化和ORM框架的工作原理至关重要。

    Java持久化与对象数据库.

    java持久化对象数据库的详细解说以及使用示例代码

    精通Hibernate:Java对象持久化详解.zip

    《精通Hibernate:Java对象持久化详解》是一本深入解析Hibernate技术的专著,它主要针对Java开发者,旨在帮助他们理解和掌握Java对象持久化的精髓。Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了...

    Java对象持久化技术

    Java对象持久化技术

    Java持久化框架对比选择

    Java持久化框架是连接对象导向编程(OOP)系统与关系型数据库管理系统的桥梁,用于处理数据持久化问题。在Java领域,有多种框架可供选择,包括Entity Enterprise Java Beans(EJB)、Java Persistence API(JPA)、...

    Java持久化数据结构详解.pdf

    在Java编程中,持久化数据结构是一个重要的概念,它涉及到数据如何在程序运行期间和运行之后保持...它可能还会涉及序列化、数据库连接、文件存储等其他持久化方法,帮助开发者理解如何在Java中有效地管理和持久化数据。

    Java持久化框架的选择.pdf

    Java持久化框架的选择 Java持久化框架是软件系统架构中的关键组件,负责隐藏应用程序数据持久化的底层复杂性。在选择合适的Java持久化框架时,需要考虑多种因素。以下是对常见Java持久化框架的分析和比较。 1. ...

    我自己做的一个Java持久化框架

    我自己做的一个Java持久化框架 可以给hibernate入门者看一下,其中有hibernate的思想和iBatis的思想,如果你只是一个网站开发者那么这一套框架将加快你的开发速度。如果你是一个开发者,那么你可以很好的研究其中的...

    Java对象持久化技术详解

    Java对象持久化技术详解,精通Hibernate

    自己写的一个持久化层

    这个自定义实现可能是为了学习目的,以便理解持久化机制的工作原理,或者是为了满足特定项目的需求,而无法直接使用Hibernate等现成框架。 描述中提到“模仿Hibernate的操作”,暗示了这个持久化层可能包含了类似的...

    深入理解持久化对象

    ### 深入理解持久化对象 #### Hibernate与持久化对象 Hibernate作为一款优秀的Java持久层框架,其设计理念强调低侵入性,这意味着在开发过程中,可以使用标准的Java对象(POJO)进行编程,无需让POJO继承特定的...

    java持久化.pdf

    Java持久化是编程领域中一个重要的概念,主要指的是将Java对象的数据存储到持久化存储介质,如数据库中,以便在程序运行的不同阶段都能访问这些数据。在Java中,Hibernate是一个常用的对象关系映射(ORM)框架,它为...

Global site tag (gtag.js) - Google Analytics