POJO应用架构:Spring与EJB 3.0的对比

C++实现SM4国密算法实战指南 通过以上实现,开发者可以快速在C++项目中集成SM4国密算法,满足金融、政务等领域的安全需求。实际部署时建议通过国家密码管理局的合规性检测,并定期更新密钥管理策略。库(支持国密算法),需提前安装并配置开发环境。 阅读详情
爱因斯坦曾经说过:"每件事物都应该尽可能简单,而不是更简单"。的确,对科学真理的追求都是为了简化理论的根本假设,这样我们才能处理真正麻烦的问题。企业级软件的开发也是这样的。

  简化企业级软件开发的关键是提供一个隐藏了复杂性(例如事务、安全性和永续性)的应用框架。良好设计的框架组件可以提升代码的重复使用(reuse)能力,提高开发效率,从而得到更好的软件质量。但是,目前J2EE 1.4中的EJB 2.1框架组件被人们普遍认为是设计较差的和过于复杂的。Java开发者对EJB 2.1很不满,他们已经试验了多种其它的用于中间件服务传送的方法。最引人注目的,下面两个框架组件已经引起开发者的巨大兴趣和积极的反映。它们很可能成为未来企业级Java应用程序可供选择的框架组件。

  · Spring框架组件是一个流行的,但是非标准的开放源代码框架组件。它主要是由Interface21 Inc.公司开发和控制的。Spring框架组件的架构是基于依赖注入(DI)设计模式的。Spring可以单独地或者与现有的应用程序服务器一起工作,它大量地使用XML配置文件。

  · EJB 3.0框架组件是一个标准的框架组件,由Java社区组织(JCP)定义,并受到所有主流的J2EE厂商支持。预发布的EJB 3.0规范的开放源代码和商业实现都可以在JBoss和Oracle上看到了。EJB 3.0大量使用Java注释(annotation)。

  这两个框架组件的核心设计理念是相同的:两者的目标都是把中间件服务传递给松散耦合的简单旧式Java对象(POJO)。这些框架组件通过在运行时截取执行内容或向POJO注入服务对象,把应用程序服务与POJO捆绑在一起。POJO本身不关心捆绑的过程,并且对框架组件几乎没有依赖。其结果是,开发者可以聚焦于业务逻辑,个人可以在没有框架组件的情况下测试他们的POJO。此外,由于POJO不需要从框架组件中继承或实现框架组件接口,开发者建立继承结构和构建应用程序的时候都有高度的灵活性。

  但是,尽管两者的设计理念是相同的,它们传递POJO服务时却采用了完全不同的方法。尽管目前已经出版了大量的图书和文章来把Spring或EJB 3.0与EJB 2.1进行对比,但是它们都没有对Spring与EJB 3.0之间的差异进行认真的研究。在本文中,我将研究Spring和EJB 3.0框架组件之间的关键差异,并讨论它们的优缺点。本文的主题也可以应用在其它一些名气稍小的企业级中间件框架组件上,因为它们都聚焦于"松散耦合的POJO"设计。我希望本文能够帮助你选择符合需求的最佳的框架组件。
  厂商无关性(Independence)

  开发者选择某种Java平台的一个最重要的理由就是该平台的厂商无关性。EJB 3.0是一个开放的、标准的、具有厂商无关性的平台。EJB 3.0规范是由企业级Java团体中所有主流开放源代码和商业厂商开发和支持的。EJB 3.0框架组件把开发人员与应用程序服务器实现(implementation)隔离开来了。例如,尽管JBoss的EJB 3.0实现是基于Hibernate的,而Oracle的EJB 3.0实现是基于TopLink的,但是开发人员并不需要学习Hibernate或TopLink的特殊API,就可以让他们的应用程序在JBoss和Oracle上运行。厂商无关性把EJB 3.0框架组件与其它的POJO中间件框架组件区分开来了。

  但是,很多EJB 3.0的批评家迅速指出,在写这篇文章的时候,EJB 3.0规范还没有达到最终发表的版本。在EJB 3.0被所有主流的J2EE厂商采用之前可能还需要一到两年时间。但是,即使你的应用程序服务器还没有自然地(natively)支持EJB 3.0,你还是可以通过下载和安装一个"嵌入式的" EJB 3.0产品,在服务器上运行EJB 3.0应用程序。例如,JBoss嵌入式EJB 3.0产品是开放源代码的,可以在任何与J2SE-5.0兼容的环境中(例如,在Java应用程序服务器中)运行。它现在正在进行beta测试。其它的厂商也可能很快发布他们的嵌入式EJB 3.0产品,特别是用于规范的"数据永续性"部分的产品。

  另一方面,Spring一直是非标准的技术,而且在可以预见的未来它仍然是这样的。尽管你可以把Spring框架组件与任何应用程序服务器一起使用,但是Spring应用程序都被"锁定"在Spring自身和你所选择的集成到Spring中的特定服务中了。

  · 尽管Spring框架组件是一个开放源代码项目,但是它仍然拥有配置文件的专利XML格式和专利编程接口。当然,这类"锁定"发生在任何非标准的产品上,Spring也不例外。但是它却造成了:你的Spring应用程序的长期生存能力依赖于Spring项目本身(或Interface21 Inc公司,它雇佣了大多数Spring核心开放人员)。此外,如果你使用任何Spring特定的服务,例如Spring事务管理器或Spring MVC,你就被"锁定"在这些API中了。

  · Spring应用程序需要知道后台的服务提供者。例如,对于数据持续(data persistence)服务来说,Spring框架组件为 JDBC、Hibernate、iBatis和JDO使用了不同的 DAO和模板辅助类。因此,如果你希望为Spring应用程序更换持续服务提供者(例如从JDBC切换到Hibernate),你就必须重构自己的应用程序代码,使用新的辅助类。

   服务集成

  从较高的层次看,Spring框架组件位于应用程序服务器和服务类库之上。其服务集成代码(例如数据访问模板和辅助类)位于框架组件之中,并暴露给应用程序开发者。与此不同的是,EJB 3.0框架组件被紧密地集成到应用程序服务器中,服务集成代码被封装在标准的接口中。

  其结果是,EJB 3.0厂商可以积极地优化总体性能和开发者体验。例如,在JBoss的 EJB 3.0实现中,使用EntityManager保持实体 Bean POJO的时候,下层Hibernate对话事务会自动地与该调用方法的JTA事务联系在一起,当JTA事务提交的时候,它也会提交。如果使用简单的@PersistenceContext注释(本文后面有一个例子),你甚至于可以在有状态的(stateful)对话bean中把EntityManager和它的下层Hibernate事务捆绑到一个应用程序事务上。该应用程序事务在一个对话中跨越了多个线程,它在事务性的Web应用程序(例如多页面 购物车)中是非常有效的。由于在JBoss中,EJB 3.0框架组件、Hibernate和Tomcat紧密集成,上述的简单和集成的编程接口才得以实现。Oracle的EJB 3.0框架组件和其下层Toplink持续服务之间的也实现了类似层次的集成。

  EJB 3.0中集成服务的另一个例子是群集( clustering)支持。如果你在服务器群集中部署EJB 3.0应用程序,那么所有的失效接续(fail-over)、负载均衡、分布式缓存和状态复制服务都是可以自动地供应用程序使用的。下层群集服务都隐藏在EJB 3.0编程接口后面,它们对于EJB 3.0开发人员来说是完全透明的。

  在Spring中,优化框架组件与服务之间的交互操作要困难得多。例如,为了使用Spring的宣告式事务服务来管理Hibernate事务,你必须在XML配置文件中显式地配置Spring TransactionManager和Hibernate SessionFactory对象。Spring应用程序开发者必须显式地管理跨多个HTTP请求的事务。此外,要在Spring应用程序中使用群集服务也没有简单的途径。

   服务集成的灵活性

  由于Spring中的服务集成代码是作为编程接口的一部分暴露的,应用程序开发者可以根据需要灵活地集成服务。这个特性允许你集成自己的"轻量级"应用程序服务器。Spring最普遍的使用方式是把Tomcat和Hibernate"粘合"在一起来提供简单的数据库驱动web应用程序。在这种情况下,Spring自身提供事务服务,Hibernate提供持续(persistence)服务--这种组织方式在Spring中建立了一个微型应用程序服务器。

  EJB 3.0应用程序服务器没有赋予你挑选服务的灵活性。在大多数情况中,你得到一组事先包装好的特性,而你只需要其中的一部分。但是,如果应用程序服务器由模式化的内部设计主导(类似JBoss),那么你就可能把它分开,去掉一些不必要的特性。在任何情况下,定制成熟的应用程序服务器都不是一个简单的事情。

  当然,如果应用程序的范围超越了单节点,那么你可能需要捆绑来自普通应用程序服务器的服务(例如资源缓冲池、消息队列和群集)。在总体的资源消耗方面,Spring解决方案与任何EJB 3.0解决方案一样,都是"重量级"的。

  在Spring中,灵活的服务集成使得我们更容易把仿制(mock)对象(而不是实际的服务对象)捆绑到应用程序,用于在容器外部进行单元测试。在EJB 3.0应用程序中,大多数组件都是简单的POJO,我们可以很容易地在容器外部测试这些它们。但是对于测试那些涉及到容器服务的对象(例如持续EntityManager),我们推荐在容器内测试,因为比起仿制对象的方法,它们更简单、更牢固、更精确。 XML与注释的比较
从应用程序开发者的角度来看,Spring的编程接口主要是基于XML配置文件的,而EJB 3.0广泛使用了Java注释。XML文件可以表达复杂的关系,但是它们同时也很冗长、牢固程度也较低。注释简单明了,但是在注释中我们却很难表达复杂的或层次的结构。

  Spring和EJB 3.0关于XML或注释的选择是依赖于这两个框架组件后面的架构的:由于注释只能保存相当少的配置信息,只有预先集成的框架组件(类似在框架组件中已经完成了大多数预备工作)可以广泛地把注释作为配置选项。我们已经讨论过了,EJB 3.0符合这种需求,而Spring作为一个通用的DI框架组件,不符合这个需求。

  当然,EJB 3.0和Spring都在学习对方的最佳特性,它们都在某个程度上支持XML和注释。例如,在EJB 3.0中XML配置文件是一个可选的重载机制,可以用于改变注释的默认行为。注释也可以用于配置某些Spring服务。

  认识XML和注释之间的区别的最好途径是通过示例。在下一部分,我们会看到Spring和EJB 3.0是如何为应用程序提供关键服务的
openlayers全面教程306+【目录】 vue+openlayers系列教程旨在为开发者提供简单快捷的示例。在每一个示例中,解释相应的API知识点。 阅读详情

相关推荐

ROS环境下UR机械臂与Realsense相机手眼标定实战指南

本文提供了在ROS环境下,对UR机械臂与Realsense相机进行手眼标定的完整实战指南。详细介绍了从环境搭建、软件包安装、硬件配置到分步数据采集与计算的完整流程,并分享了常见的避坑技巧与精度优化方法,旨在帮助开发者高效、准确地完成标定,为后续的机器人视觉应用奠定坚实基础。

sunny的博客 648

POJO、JavaBean和EJB的区别

1、POJO(Plain Old Java Object)         “Plain Old Java Object”的意思是“纯朴旧式的java对象”,现在大家也称它作“简单的java对象”。何为纯朴旧式?在该对象中只有private属性的参数以及根据每个参数定义的get和set方法,没有其它的方法、没有类的继承、接口的实现等,更没有被其它框架侵入的java对象。 public cla...

夜半一碗凉泡面的博客 2578

高速设计注意事项总结——MDI篇

在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容

qq_16237389的博客 1446

EJB和Spring

EJB实现原理: 就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。RMI实现原理 :就是通过Java对象可序列化机制实现分布计算。服务器集群: 就是通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。

lipviolet的博客 1264

长期换衣行人重识别(Long-Term Clothes-Changing Person Reid)数据集汇总

长期换衣行人重识别任务中目前常用的数据集总览目前换衣数据集的主要问题数据集换衣/总体情况集统计DeepChange(2021)LaST(2021)COCAS(2020)VC-Clothes(2020)LTCC(2020)PRCC(2019)Celebrities-reID(2019) 总览 在长期换衣行人重识别的任务当中,数据集的获取(尤其是对于学术环境下)是一个难点,主要的困难有以下几点: 采集大规模的数据集比较困难。 采集不同的衣服的数据集比较困难。 采集不同衣服不同角度的数据集比较困难。 目前也有

KingsMan666的博客 8380

python cartopy绘制扇形区域图/cartopy绘制北极部分区域

实际上,这个问题原因还是由于投影转换的问题,在set_extend时,绘制的上下边界仍然是方形、未被正确投影的边界,与我们的set_boundary存在冲突,最根本的原因还是在于cartopy对于投影计算的一些缺陷。另外我们需要指出的是:**该方法不适用于极地投影,即NorthPolarStereo,由于NorthPolarStereo本身投影特性只需一个参数,本身并不适合。我们绘制极地投影时,同样也是使用set_boundary绘制圆形边界,那么当我们想要绘制扇形时,可以通过。请根据喜好自行选择,

weixin_43750300的博客 3212

两种类型框架概述 EJB Spring

摘自  :中国BLOG 引言 EJB的体系结构是J2EE的基础和核心,J2EE定义了整个标准的应用开发体系结构和一个部署环境,基于EJB的框架一度成为人们开发Java企业应 用的首选。随着Java开源项目阵营的发展壮大, 一些基于POJOs(Plan Old Java Objects)的开源框架被越来越广泛地引入到Java企业应用的开发中来。根据复杂程度人们习惯把前者称为重量级框架,把后者称...

tiger.passion 490

Spatial-ORMLLM: Improve Spatial Relation Understanding in the Operating Room with Multimodal Larg...

手术室(OR)中的精准空间建模是众多临床任务的基础,可为术中感知、风险规避及手术决策提供支持。现有方法虽利用大规模多模态数据集进行 latent 空间对齐,以隐式学习空间关系,但却忽视了多模态大型语言模型(MLLM)的3D能力。然而,这种方法存在两个问题:1)手术室通常缺乏多台视频和音频传感器,多模态3D数据难以获取;2)仅依赖易获取的2D数据训练,无法捕捉复杂场景中的细粒度细节。为解决这一问题,我们提出——首个针对手术室3D空间推理的大型视觉语言模型。

UnknownBody_2的博客 592

POJO是什么意思

它是一种普通的 Java 类,不依赖于特定的框架或技术,也不实现特定的接口。相比于传统的企业级 Java EE 应用中的 EJB(Enterprise JavaBeans),POJO 更加简单、轻量级,易于理解和维护。Spring 框架通过依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)等技术,使得开发者可以将 POJO 与 Spring 容器无缝集成,实现更加灵活、可测试、可扩展的应用程序。

思索的涟漪,突破自我 2089

9.20华为OD机试真题 新系统 - 简单URL 路径提取器 (Java/Py/C/C++/Js/Go)

9.20华为OD机试真题 新系统 - 简单URL 路径提取器 (Java/Py/C/C++/Js/Go)

算法大师! 348

【通信原理】基于【MATLAB】的通信OFDM系统仿真

主要进行OFDM系统的仿真,使用MATLAB软件对OFDM系统的接收端和发射端分别进行模拟仿真。

ALi.S的博客 5792

作为架构师,你必需要搞清楚的概念:POJO、PO、DTO、DAO、BO、VO

POJO、PO、DTO、DAO、BO、VO这些概念作为Java开发来说应该全部或者部分遇到过,作为架构师的你想必更是清楚这些概念在不同场景的应用。 下面我逐一介绍一下,想必你会更深刻。 POJO 全称为:Plain Ordinary Java Object,即简单普通的java对象。一般用在数据层映射到数据库...

weixin_33995481的博客 314

18、未来医疗信息学中的太赫兹天线技术

本文探讨了太赫兹天线技术在医疗信息学中的关键作用,重点分析了分裂环谐振器和纳米结构光导天线(PCA)的设计与性能提升方法,介绍了相干与非相干太赫兹检测技术,并通过等效电路模型和数值模拟深入解析PCA工作机理。文章还展示了太赫兹技术在无创血糖监测、肿瘤检测等医疗诊断中的实验应用,总结了其非侵入性、高分辨率成像和多参数分析等优势,同时指出信号检测难、成本高和技术复杂等挑战。未来趋势包括设备小型化、效率提升及与人工智能融合,拓展至药物研发、皮肤与神经疾病诊断等领域,展现出变革医疗健康的巨大潜力。

milk8的博客 146

POJO应用架构:Spring与EJB 3.0的对比-Java基础-Java-编程开发

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/javascript"

java专栏 509

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

EJB2.1 EJB3.0 Spring

   Java annotations are the key behind EJB 3.0, which ties POJO services, POJO persistence, and dependency injection altogether into a complete enterprise middleware solution. EJB 3.0s annota

持续改进 2026

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring 与 EJB 比较

本文中,笔者希望比较客户的评价Spring相对EJB所具有的一些特性,同时,Spring可以与EJB进行协同的工作,Spring可以应用到EJB应用中去,同样,EJB可以在Spring应用中很好的使用。首先EJB最初的设计思想考虑的是为分布式的应用服务的。比如,JBoss的EJB 3.0的实现是基于Hibernate的,Oracle的EJB 3.0实现是基于TopLink的,但是,在JBoss或者Oracle上跑应用程序,开发者既不需要去学习Hibernate,也不需要学习TopLink提供的独特API。

JBIB ENGINE 1350

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

POJO应用框架:Spring与EJB3.0的比较

英文原文地址: http://www.onjava.com/pub/a/onjava/2005/06/29/spring-ejb3.html 中文地址: http://www.matrix.org.cn/resource/article/43/43718_Spring_EJB.html 关键词: Spring EJB 艾伯特.爱因斯坦曾经说过:“一切都应该尽可能地简单,但是不

乐云天的博客 508

EJB3.0与Spring

总的来看Spring+Hibernate与JPA很相似,它们都是基于pojo的持久化。 Hibernate Session和JPA Entity Manager基本上等价,但是要记住他们的两个重要区别。        Hibernate session是一个实体缓存也是一个ORM引擎的接口。        而JPA中这两个概念是分开的。Persistence context作为缓存而

步春良 4894

POJO Application Frameworks: Spring Vs. EJB 3.0

POJO Application Frameworks: Spring Vs. EJB 3.0 by Michael Juntao Yuan -- Spring and EJB 3.0 are both reactions, in their own ways, to the complexity of EJB 2.1 and the complaints piled upon it. Both

东哩个东 1373

EJB3.0和Spring比较

0.比较目录     1) Vendor Independence 2) Service Integration 3) Flexibility in Service Assembly 4) XML versus Annotation 5) Declarative Services 6) Dependency Injection       1. 厂商无关性(Vendor ...

lyxsp的博客 254

Spring VS EJB3.0

Spring 与 EJB 比较 在开源领域,Spring开源框架已成为企业应用开发中使用最多的开源框架。Spring框架的优秀不但表现在其优雅的底层设计、使用方便快捷、面向工作实践、超强粘合能力等方面,另外一个不可忽视的方面是Spring拥有一个世界一流且活跃的技术开发团队。随着Spring的流行,于是,大家开始对比Spring与另一种流行的框架组件EJB。目前网上关于Spring和EJB的争论

杨天赐 725

POJO应用框架:Spring Vs. EJB3.0

POJO应用框架:Spring Vs. EJB3.0 作者Michael Juntao Yuan  翻译 杨庆跃    爱因斯坦曾说过:事情应尽可能的简单,但不是为了简单而简单。实际上,追求科学真理就是不断简化理论的基本假设以使我们能够处理实际问题。企业软件开发中也遵循同样的道理。    简化企业软件开发的一个关键点是为开发者提供一个隔离复杂性(如事务、安全、持久化等)的应用框架。一个设计

杨庆跃的专栏 1078

ejb3 与 ejb2

                 EJB3 与 EJB2 区别 EJB3.0相比于以往的EJB版本而言改动很大,是到目前为止,EJB变动最大的一次。EJB之所以这么改,与EJB市场慢慢地被Spring剥夺有很大关系。EJB容器往往被看作是一种重量级组件容器,而Spring则更多地被认为用来进行轻量级企业程序的开发。面面俱到、考虑完备,是EJB的优点,但同时也是其致命弱点,很多时候我们并不需

528

java spring ejb_带你走进EJB--EJB和Spring对比(转)

http://blog.csdn.net/jnqqls/article/details/17723417通过对EJB系列的总结和学习我们已经对EJB有了基本的了解,但是为了更进一步的去深入学习EJB,我们很有必要将它拿出来跟之前非常熟悉的spring进行一下对比,通过对比来了解这两个内容的相同与不同之处,更有利于我们对两者进行深入的了解.我们都有过这样的经历,在开发应用程序的时候,选择哪个技术是比...

weixin_42525482的博客 383

POJO与Spring和EJB 3.0的对比

简化企业级软件开发的关键是提供一个隐藏了复杂性(例如事务、安全性和永续性)的应用框架。良好设计的框架组件可以提升代码的重复使用(reuse)能力,提高开发效率,从而得到更好的软件质量。但是,目前J2EE 1.4中的EJB 2.1框架组件被人们普遍认为是设计较差的和过于复杂的。Java开发者对EJB 2.1很不满,他们已经试验了多种其它的用于中间件服务传送的方法。最引人注目的,下面两个框架组件已经引...

yingfang05 186
上一篇: JSF与Struts的异同
下一篇: 把WebLogic EJB程序迁移到JBoss上
Schumann
博客等级 码龄21年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值