【叶凡网络】Java EE的开发框架之谜

2014-01-26 13:22:59 | 新闻来源:叶凡网络 | 点击量:732

想要灵活、轻松且高效地保存它无论您是否正要开始或已经决定使用关系数据库,但是如果您使用的富对象模型。只要这是一个选择—而且存在可用的优秀免费数据库,比方MySQL或可嵌入JavaHSQLDB就应该始终是一个选择)那么 Hibern很可能就是您理想的选择。您可能会惊讶于节省的时间之多,以及您将会多么地喜欢使用它.

像是「高层模组不应该依赖低层模组,Spring核心概念是IoCIoC笼统概念是「依赖关系的转移」。而是模组都必需依赖于抽象」是IoC一种表现,「实现必需依赖笼统,而不是笼统依赖实现」也是IoC一种表现,「应用顺序不应依赖于容器,而是容器服务于应用顺序」也是IoC一种表现。无论你否选择使用了EJB如果你仅仅使用了Strut或其他包括了JavaEE特有APIframework会发现Spring关注了遗留下的问题。Spring能有效地组织你中间层对象.

这是一个主要的问题,Spring能消除在许多工程上对Singleton过多使用。根据我经验。减少了系统的可测试性和面向对象特性。可通过一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,Spring能消除使用各种各样格式的属性定制文件的需要,整个应用和工程中。为此不得不读Javadoc乃至源编码吗?有了Spring可很简单地看到类的JavaBean属性。倒置控制的使用(下面讨论)协助完成这种简化。Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。

却不会影响调用代码。Spring能使EJB使用成为一个实现选择,而不是应用架构的肯定选择。能选择用POJO或localEJB来实现业务接口。适于许多web应用。例如,Spring协助你解决许多问题而无需使用EJBSpring能提供一种EJB替换物。Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA 实现。

Spring目标是实现一个全方位的整合框架,Spring核心是个轻量级容器(contain实现了IoCInversionofControl模式的容器。Spring框架下实现多个子框架的组合,这些子框架之间相互可以独立,也可以使用其它框架方案加以替代,Spring希望提供one-stopshop框架整合方案

除非它觉得所提出的框架夠新夠好,Spring不会特別去提出一些子框架来与现有的OpenSourc框架竞争。例如Spring有自己的MVC框架方案,因为它觉得现有的MVC方案有很多可以改进的地方,但它不强迫您使用它提供的方案,您可以选用您所希望的框架来取代其子框架,例如您仍可以在Spring中整合您的Strut框架

Spring中你将发现没有日志记录的包,Spring不重新开发已有的东西。因此。没有连接池,没有分布事务调度。这些均有开源项目提供(例如 CommonLog用来做所有的日志输出,或CommonDBCP用来作数据连接池),或由你应用顺序服务器提供。因为同样的原因,没有提供O/Rmap层,对此,已有有好的解决方法如Hibern和JDO

但我提供了一个笼统层覆盖了JTA 或任何其他事务战略。Spring目标是使已存在技术更加易用。例如,尽管我没有底层事务协调处置。除非我感到能提供新的一些东西。例如,Spring没有直接和其他开源项目竞争。象许多开发人员,历来没有为Strut高兴过,并且感到MVCwebframework中还有改进的余地。某些领域,例如轻量级的IoC容器和AOP框架,Spring有直接的竞争,但是这些领域还没有已经较为流行的解决方案。Spring这些区域是开路先锋。

但是防止任何特定平台或非标准化,当然保证可移植性总是一次挑战。并且支持在WebLogTomcatResinJBossWebSpher和其他应用服务器上的用户。可以帮顺序设计人员完成组件之间的依赖关系注入,Spring核心即是个IoC/DI容器。使得组件之间的依赖达到最小,进而提高组件的重用性,Spring个低侵入性(invas框架,Spring中的组件并不会意识到正置身于Spring中,这使得组件可以轻易的从框架中脱离,而几乎不用任何的修改,反过来说,组件也可以简单的方式加入至框架中,使得组件甚至框架的整合变得容易。说Spring框架是AOP框架并不是一件适当的描述,Spring最为人重视的另一方面是支持AOPAspect-OrientProgram然而AOP框架只是Spring支持的一个子框架。人们对于新奇的AOP关注映射至Spring上,使得人们对于Spring关注集中在AOP框架上,虽然有所误解,但也突显了Spring另一个令人关注的特色。

但您也可以将自己所熟悉的MVCWeb框架与Spring解合,Spring也提供MVCWeb框架的解決方案。像是StrutWebwork等等,都可以与Spring整合而成为进用于自己的解決方案。Spring也提供其它方面的整合,像是耐久层的整合如JDBCO/RMap工具(HiberniBA TIS事务处理等等,Spring作了对多方面整合的努力,故说Spring个全方位的应用顺序框架。其中三个就和MVC模式紧密相关:Strut框架可分为以下四个主要部分。同时用户请求通过控制器(Control向Action转发过程是基于由struts-config.xml文件描述的配置信息的1模型 Model实质上来说在Strut中Model一个Action类(这个会在后面详细讨论)开发者通过其实现商业逻辑。

Strut用XML来描述如何自动发生一些JavaBean属性的此外Strut还利用XML来描述在国际化应用中的用户提示信息的这样一来就实现了应用系统的多语言支持)4一堆用来做XML文件解析的工具包。也不会强迫您修改对象的行为方式。不需要实现任何不可思议的接口以便能够继续存在惟一需要做的就是创建一份 XML映射文档”告诉Hibern您希望能够保管在数据库中的类,Hibern不会对您造成妨碍。以及它如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保管为数据。与其他解决方案相比,几乎已经很完美了

所以不会引入构建和使用Hibern映射文档的具体例子(Hibernate:ADeveloper'Notebook一书的头几章中已经介绍了一个例子)此外,由于本文只是一篇介绍性的文章。网上和Hibern线文档中,还可以找到一些不错的例子,请参见下面的其他信息”局部。实际上相当直观。应用顺序对象中的属性以一种简单而自然的方式与正确的数据库结构相关联。

Hibern读取映射文档,运行时。然后动态构建Java类,以便管理数据库与Java之间的转换。Hibern中有一个简单而直观的API用于对数据库所表示的对象执行查询。要修改这些对象,一般情况下)只需在顺序中与它进行交互,然后告诉Hibern保管修改即可。类似地,创建新对象也很简单;只需以惯例方式创立它然后告诉Hibern有关它信息,这样就能在数据库中保存它

而且它与程序流的交互相当自然。适当的位置调用它就可以达成目的带来了很多自动化和代码节省方面的好处,HibernAPI学习起来很简单。所以花一点时间学习它值得的而且还可以获得另一个好处,即代码不用关心要使用的数据库种类(否则的话甚至必需知道)所在公司就曾有过在开发过程后期自愿更换数据库厂商的经历。这会造成巨大的灾难,但是借助于Hibern只需要简单地修改Hibern配置文件即可。

建立了一个关系数据库,这里的讨论假定您已经通过创立Hibern映射文档。并且拥有要映射的Java类。有一个Hibern工具集”可在编译时使用,以支持不同的工作流。例如,如果您已经拥有Java类和映射文档,Hibern可以为您创建(或更新)必需的数据库表。或者,仅仅从映射文档开始,Hibern也能够生成数据类。或者,可以反向设计您的数据库和类,从而拟定映射文档。还有一些用于Eclipsalpha插件,可以在IDE中提供智能的编辑支持以及对这些工具的图形访问。

为什么还要使用其他工具呢?下面有一些场景,既然Hibern看起来如此灵活好用。可以协助您做出判断(或许通过提供一些比较和上下文,可以有助于鉴别非常适用Hibern场所)您只想管理一组用户优先选择—您根本不需要数据库,如果应用对于数据存储的需要十分简单—例如。更不用说一个优秀的对象-关系映射系统了即使它也如Hibern这般易于使用)从Java1.4开始,有一个标准的JavaPreferAPI可以很好地发挥这个作用。Hibern似乎有些碍手碍脚,对于熟悉使用关系数据库和了解如何执行完美的SQL查询与企业数据库交互的人来说。这就像带有动力和自动排挡的快艇车会使注重性能的赛车驾驶员不耐烦一样。如果您属于这种人,如果您所在项目团队拥有一个强大的DBA 或者有一些存储过程要处理,您可能想研究一下iBA TISHibern创建者本身就把iBA TIS当作是另一种有趣的选择。对它很有兴趣,因为我曾为一个电子商务站点开发了一个类似的系统(其功能更为强大)而且从那时到现在已经在其他环境中使用过它尽管在发现Hibern之后,新项目中我通常更喜欢使用Hibern您可以认为,以SQL为中心的解决方案(比方iBA TIS反向的对象/关系映射工具,而 Hibern一个更为传统的ORM

 

还有其他外部原因会导致采用另外的方法。比方,当然。一个企业环境中,必需使用幼稚的EJB架构(或者其他一些非普通对象映射系统)可以为提供自己的数据存储工具的平台量身定做代码,比方MacOSX'CoreData使用的可能是像XMLDTD这样的存储规范,而它根本不涉及关系数据库。

JA VA 1.2为老的java1.0AWT添加了Java基础类(JFC这是一个被称为“SwingGUI一部分。Swing第二代GUI开发工具集,图形用户接口(GUI库最初的设计目的让顺序员构建一个通用的GUI使其在所有的平台上都能够正常的显示。但是比较遗憾的AWT发生的各系统看来都同样欠佳的图形用户接口。AWT采用了与特定平台相关的实现,而绝大部分Swing组件却不是Swing构筑在AWT上层的一组GUI组件的集合,为了保证可移植性,完全用Java语言编写,与AWT相比,Swing提供了更完整的组件,引入了许多新的特性和能力。如:JTablJTreeJcomboxSwing也增强了AWT中组件的功能。正是因为Swing具备了如此多的优势所以我以后在开发中都使用SwingJCompon类是Swing组件的基类,Swing提供了更多的组件库。而JCompon继承自Contain类,因此,所有的Swing组件都是AWT容器。Swing采用了MVC设计模式。

对JDBC进行了轻量级的对象封装,Hibern一个开放源代码的对象关系映射框架。使得Java顺序员可以使用对象编程思维来支配数据库。Hibern可以在应用EJBJavaEE架构中取代CMP完成数据耐久化。还可以应用在任何使用JDBC场所,既可以在Java客户端程序实用,也可以在Servlet/JSPWeb应用中使用

上一篇:【叶凡网络】前纽约市长反对移民改革将作茧自缚警告共和党 下一篇:【叶凡网络】国家主席习近平感言祖国和人民感谢戍边官兵