Java EE/J2EE面向对象编程之道

OO思维

经常看到不少人抱怨Java EE/J2EE中配置太复杂,烦琐,不简单易学,其实所谓简单易学是取决于你是否有OO思维方式。

表现层的界面表单中通常是一些离散数据,也就是单个字段数据,通过Struts等框架提供ActionForm以及标签库,将这些单个字段数据封装起来和业务层的Domain Model进行了映射,因此,表现层的主要编程工作就是映射配置。

持久层是将Domain Model对象保存到数据库中,过去使用JDBC,我们要逐个打开这些Model对象,然后每个字段逐个保存到数据库中,如果说表现层框架是实现离散数据封装,那么持久层实现的是反方向:拆封。Hibernate是一个持久层O/R mapping框架,也就是在对象和关系数据库之间进行映射的框架,EJB的CMP也是类似道理,因此,持久层的主要编程工作也是映射配置。

表现层和持久层这种配置工作就如同打包邮寄一样:你首先要将你的单件用一个箱子包装起来,达到目的地,这个箱子被打开,单件被逐步取出。表现层和持久层这样做的目的是保证中间业务层完全面向对象,他们都是和一个个对象打交道,而不是单件数据字段。

在一个真正面向对象的系统中,表现层和持久层主要工作就是配置,而且是映射mapping的配置。下面的问题就是:如何解决映射配置简单而且易用,如果拥有正确的指导配置的思维,那么配置工作就容易简单多,否则,就倍感配置复杂。

其实那些感觉Java配置复杂的人其实他并没有完整的OO思维。为什么这么说呢?以ORM(Hibernate)配置简易方式说明:

配置的简要之道

首先,配置是映射配置,顾名思义,也就是在两者之间做协调,牵线搭桥,说白了,就是做红娘,但和做红娘又有些区别,做红娘可以要求双方做些改变,互相迁就,但是做映射配置,则不能这样,因为那样做就可能做出和需求要求不一样的东西。

以持久层映射配置来说:双方是指Domain Model对象和关系数据表,如果感觉在两者之间配置映射很困难,双方做些改变,但是有可能 需求不答应,你一旦为协调而作出的改变可能偏离需求实现的目标,最后作出的系统面貌全非,根本不是客户所需要的。

那么怎么办?很显然,紧扣需求,反映需求的那一方坚决不要变动,那么Domain Model和关系数据表哪一方反映需求呢?按照OO分析,当然 是Domain Model,Model对象我们是依据Evans Model等模型驱动设计MDD概念设计出来,他们是需求的代表。

很显然,我们的映射配置必须顺着Model对象这个思维来配,对于名词式的Model,关联无外乎是其主要关系,当然还有继承,因此,象Hibernate 这些映射配置语法也是面向这些主要对象关系的。

表现层配置也是同样的道理,需要将Domain Model配置成界面表单,在实际中,我们有可能采取的是通过界面收集需求,因此,这个映射配置过程也是考验Model对象是否提炼正确与否,有可能发现Model不能实现一些界面需求功能,这时反过来必须修改我们的Model,而不是仅仅在表现层这个技术层面做些补救措施就糊弄过去。

Java EE/J2EE系统开发过程 敏捷的迭代是必然的。没有一个天才能够一步到位提炼出兼顾界面和数据表以及需求的统一模型出来。

总之,完成一个真正面向对象的Java EE/J2EE系统,必须抓住领域建模和具体框架熟练配置两点,只有这样才能保证Java项目成功实施。最关键的是提炼出反映出业务系统的领域模型:Domain Model,完成业务建模后,就是依赖Struts/Hibernate等配置分配将Model 映射到界面和数据库,其实就是将业务模型移植到计算机领域并能够正确运行。

时间: 2024-11-03 03:44:21

Java EE/J2EE面向对象编程之道的相关文章

j2ee javaee java-最近在做一个java ee的学生考试管理系统,有个小问题

问题描述 最近在做一个java ee的学生考试管理系统,有个小问题 可以设定课程的考试成绩的计算方法:能够在页面上对某课程动态增加考核点,并填入该考核点的分值比例.如:如对J2EE课程,可新增3个考核点,考核点1为到课情况,分值比例为20%:考核点2为作业,分值比例为20%:考核点3为考试,分值比例为60%.能够验证分值比例之和是否等于100%. 这是要求 , 谁能给我提示一下如何实现 实在是想不出来 解决方案 一:E-R 关系 你们项目里面肯定会有学生信息表.课程信息表这二张表,现在要你动态对

在Java EE环境下使用Kodo EJB

Kodo EJB是一个支持对象/关系映射的框架,根据EJB3规范的要求,Kodo EJB除了支持在普通Java应用中提供轻量级的持久层框架之外,也支持在JAVA EE容器中使用满足重量级企业应用的需求,充分利用JAVA EE容器中提供的优越特性如容器管理事务.远程(Remote)访问. 基于Kodo EJB开发的应用支持使用EJB或者JCA标准接入到JAVA EE环境中: JCA Kodo EJB支持JCA1.0标准,因此基于Kodo EJB开发的应用可以和其他JCA资源一样轻松的发布到JAVA

安全注释和授权在GlassFish和Java EE 5 SDK中的应用

安全性对于企业环境非常重要.在 Java EE 5 / GlassFish 环境中,您可以通过以下几种方式实现安全性: 传输层安全性 (TLS) / 安全套接字层 (SSL) 技术 身份验证 (Authentication) 和授权 (Authorization) 消息层安全性(仅适用于 GlassFish 中的 Web 服务) 本文讨论身份验证和授权.参考资料 [1].[2] 和 [3] 讨论了如何在客户端和服务器端为 Enterprise JavaBeans 和 Web 服务建立 SSL 环

Java EE 5技术简介

NetBeans IDE 6.0 的开发是在 Java EE 和 Glassfish 工作组的密切合作下完成的,它实现了与新的 Java EE 5 规范的完美集成,从而可以在此 IDE 中轻松地使用新规范.NetBeans IDE 6.0 是您快速学习 Java EE 5 编程并使用它高效工作的最佳途径. 本文档介绍了 Java EE 5 规范的一些重要概念,以及它们如何与您目前的编程项目相关联的.本文将 介绍以下主题: 标注取代部署描述符 简化的 EJB 软件开发 使用依赖关系注入来访问资源

构建可扩展的Java EE应用(二)

当并发用户数明显的开始增长,你可能会不满意一台机器所能提供的性能,或 者由于单个JVM实例gc的限制,你没法扩展你的java应用,在这样的情况下你可以 做的另外的选择是在多个JVM实例或多台服务器上运行你的系统,我们把这种方法 称为水平扩展. 请注意,我们相信能够在一台机器的多个JVM上运行系统的扩展方式是水平扩 展方式,而非垂直扩展方式.JVM实例之间的IPC机制是有限的,两个JVM实例之间 无法通过管道.共享内存.信号量或指令来进行通讯,不同的JVM进程之间最有效 的通讯方式是socket.

Java EE 5

简介 Java EE 技术是 Java 语言平台的扩展,支持开发人员创建可伸缩的强大的可移植企业应用程序.它为应用程序组件定义了四种容器:Web.Enterprise JavaBean(EJB).应用程序客户机和 applet.一个应用服务器规范详细描述了这些容器和它们必须支持的 Java API,这促使 Java EE 产品相互竞争,同时保证符合这个规范的应用程序可以在服务器之间移植. 这个平台的最新版本 Java EE 5 已经于 2006 年 5 月发布.Java EE 5 主要关注提高开

Java EE 5中的Web服务(JAX-WS)

Java API for XML Web Services (JAX-WS) 2.0,JSR 224 是 Java EE 5 平台的重要组成部分.作为 Java API for XML-based RPC 1.1 (JAX-RPC) 的后续发行版本,JAX-WS 简化了使用 Java 技术开发 Web 服务的工作.并且通过对多种协议(如 SOAP 1.1.SOAP 1.2.XML)的支持,以及提供用于支持其他协议和 HTTP 的工具,它解决了 JAX-RPC 1.1 中存在的一些问题.JAX-W

cvs-Eclipse for java EE没有CVS

问题描述 Eclipse for java EE没有CVS Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1) Build id: 20150924-1200 这是我的Eclipse版本,在open perspective中没有CVS,公司要用,谁知 道怎么找,或者怎么装 解决方案 http://www.eclipse.org/downloads/packages/eclipse-ide-java-dev

深入理解JavaScript系列(17):面向对象编程之概论详细介绍_基础知识

介绍 在本篇文章,我们考虑在ECMAScript中的面向对象编程的各个方面(虽然以前在许多文章中已经讨论过这个话题).我们将更多地从理论方面看这些问题. 特别是,我们会考虑对象的创建算法,对象(包括基本关系 - 继承)之间的关系是如何,也可以在讨论中使用(我希望将消除之前对于JavaScript中OOP的一些概念歧义). 英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-7-1-oop-general-theory/ 概论.范式与思想 在进行E