初学者如何开发出高质量J2EE系统
J2EE系统设计方案

J2EE系统设计方案J2EE(Java 2 Platform, Enterprise Edition)是一种用于构建企业级应用程序的Java平台。
J2EE系统设计方案是指在J2EE平台下为开发企业级应用程序而制定的系统级架构和设计方案。
在本文中,我们将深入探讨J2EE系统设计方案,并分析其组成部分、开发模式以及实现方法。
1. J2EE系统设计方案的组成部分J2EE系统设计方案由以下组成部分构成:1.1 企业级应用程序设计这个组成部分提供了开发企业级应用程序所需的基础模型和设计规范。
这些规范包括MVC(模型-视图-控制器),ORM (对象关系映射),面向服务架构(SOA),以及几种设计模式。
此外,这个组成部分还提供了如何实现可扩展性和可维护性的建议。
1.2 中间件设计模式中间件是指在应用程序、操作系统和硬件之间运行的一系列软件。
J2EE系统设计方案的中间件组成部分提供了如何设计分布式应用程序的建议,例如,通过使用EJB(企业JavaBean)。
1.3 数据库设计数据库设计是针对企业级应用程序所需的数据存储而制定的规范和建议。
它包括如何设计数据库架构、如何最大化数据库性能和可靠性的建议,以及如何实现数据安全性的建议。
1.4 安全性设计这个组成部分提供了如何实现应用程序安全性的一些建议。
例如,如何进行单点登录,如何管理用户角色和权限以及如何保护敏感数据。
2. J2EE系统设计方案的开发模式J2EE系统设计方案采用了Model-View-Controller(MVC)开发模式。
这个开发模式将应用程序划分为三个部分:模型(Model),视图(View)和控制器(Controller)。
- 模型:模型是数据和业务逻辑的实际实现。
它表示应用程序的内部状态和行为。
- 视图:视图是与用户交互的部分。
它呈现了在浏览器中看到的图形用户界面。
- 控制器:控制器是应用程序中的主要逻辑。
它连接视图和模型,并控制用户界面如何响应用户操作。
J2EE流程经验总结(:企业级应用开发的最佳实践

J2EE流程经验总结(:企业级应用开发的最佳实践2023年了,随着技术的不断发展,企业级应用开发也迎来了一系列的变革和挑战。
作为一名资深的J2EE开发人员,我在长期的工作中积累了一定的经验和实践,今天我想要和大家分享一些在2023年企业级应用开发中的最佳实践。
1. 采用微服务架构随着微服务架构的兴起和不断发展,越来越多的企业开始采用该架构来构建其应用。
在2023年,采用微服务架构已经成为了企业级应用开发的必备方式。
相比于传统的单体应用,微服务架构具有更加敏捷、可扩展和易于维护的特点,能够更好地适应业务的快速变化。
2. 选择合适的开发框架和工具随着J2EE技术的不断发展,越来越多的开发框架和工具也不断涌现。
在2023年的企业级应用开发中,我们需要根据具体的需求和场景来选择合适的开发框架和工具。
比如,对于高并发、大规模的应用,我们可以选择使用Spring Cloud或Dubbo等框架;对于前端开发,我们可以选择使用React或Vue.js等框架。
3. 坚持测试驱动开发在2023年,测试驱动开发已经成为了企业级应用开发的主流模式。
通过测试驱动开发,我们能够更加高效地开发出高质量的代码,并减少后期的维护成本。
因此,我们需要坚持使用测试驱动开发的方式进行开发,将测试纳入到整个开发流程中。
4. 引入DevOps思想在2023年的企业级应用开发中,DevOps已经成为了企业级应用开发的主流思想。
通过引入DevOps,我们能够更加高效地进行开发、测试和部署,从而缩短交付周期、降低成本和实现快速迭代。
因此,我们需要引入DevOps思想,并结合具体的场景和工具来实现。
5. 关注安全和隐私保护随着数字化的加速和信息化的深入,企业级应用的安全和隐私保护也越来越受到重视。
在2023年的企业级应用开发中,我们需要重视应用的安全和隐私保护,并采取必要的措施来保护用户的安全和隐私。
比如,我们可以使用一些安全框架和加密算法来保护应用的安全,采用一些隐私保护手段来保护用户的隐私。
J2EE开发的8个基本步骤

J2EE开发的8个基本步骤,它是以体系架构为中心的。
1、需求分析 需求分析用来描述系统应该和不应该做什么,从而开发者和用户可以创建一个初始化的商业联系。
你可以用商业的概念、该领域的术语、框图或者其它方法将功能性的需求写成文档,而非功能性的需求,例如性能和事务,可以写在附加的需求文档中。
你可以用文本或者HTML来创建高级别的UI模型,采取哪种方式,要看你在该项目中介入的深度。
一个典型的电子商务系统。
viewOrder图说明的是一个用户通过Web登录至系统,查看订单的列表,并且可点击进去查看每张订单的细节。
addLineItems说明的是用户浏览产品目录,选择感兴趣的产品,并且将它们加入到购买订单中。
2、面向对象的分析 分析产生问题域模型:类、对象和交互。
你的分析应该脱离任何的技术或者实现的细节,而应该包含有一个理想的模型。
对象分析可帮助你理解问题和获得问题领域方面的知识。
你必须维护一个纯领域的模型,它不包含技术的细节,这是由于商业流程的改变要比信息技术慢得多。
上面的两步--需求分析和面向对象的分析并不是J2EE特有的,对于许多面向对象的方法论来说,都是很常见的。
一个高级别的对象分析模型,它是一个宠物店的例子应用。
它说明了我们由需求分析use cases中确定的主要概念。
我们将这些概念模型化到对象中,并且确定它们的关系。
需求和对象分析的结果是J2EE体系开发的一个入门点。
要开发一个体系,你可选择一个垂直的部分--通常是一个关键的部分,例如是订单领域的对象模型--来作对象设计、实现、测试和开发。
(一个垂直的部分,是一个RUP概念,是系统的一小部分。
开始点是use case的一个子集。
一个垂直部分的实现就会产生一个全功能的迷你系统,包括所有层,例如用户界面层的JavaServer Pages(JSPs),中层的商业对象,例如是Enterprise JavaBeans (EJBs)和后台的数据库)。
系统构建高性能J2EE应用的五种核心策略

系统构建高性能J2EE应用的五种核心策略对于J2EE,我们知道当开发应用时,在架构设计阶段的决定将对应用的性能和可扩展性产生深远的影响。
现在当开发一个应用项目时,我们越来越多地注意到了性能和可扩展性的问题。
应用性能的问题比应用功能的不丰富问题往往更为严重,前者会影响到所有用户,而后者只会影响到碰巧使用该功能的那些用户。
作为应用系统的负责人,一直被要求"要少花钱多办事"----用更少的硬件,更少的网络带宽,以及更短的时间完成更多的任务。
J2EE通过提供组件方式和通用的中间件服务是目前首选的最优方式。
而要能够构建一个具有高性能和可扩展性的J2EE应用,需要遵循一些基本的架构策略。
缓存(Caching)简单地说,缓存中存放着频繁访问的数据,在应用的整个生命周期中,这些数据存放在持久性存储器或存放在内存中。
在实际环境中,典型的现象是在分布式系统中每个JVM中有一个缓存的实例或者在多个JVM中有一个缓存的实例。
缓存数据是通过避免访问持久性存储器来提高性能的,否则会导致过多的磁盘访问和过于频繁网络数据传输。
复制复制是通过在多台物理机器上创建指定应用服务的多个拷贝来获得整体更大吞吐效率。
理论上看,如果一个服务被复制成两个服务,那么系统将可处理两倍的请求。
复制是通过单一服务的多个实例的方式从而减少每个服务的负载来提高性能的。
并行处理并行处理将一个任务分解为更为简单的子任务,并能够同时在不同的线程中执行。
并行处理是通过利用J2EE层执行模式的多线程和多CPU特点来提高性能。
与使用一个线程或CPU处理任务相比,以并行方式处理多个子任务可以使操作系统在多个线程或处理器中进行分配这些子任务。
异步处理应用功能通常被设计为同步或串行方式。
异步处理只处理那些非常重要的任务部分,然后将控制立即返回给调用者,其他任务部分将在稍后执行。
异步处理是通过缩短那些在将控制返回给用户之前必须处理的时间来提高性能的。
虽然都做同样多的事情,但是用户不必等到整个过程完成就可以继续发出请求了。
开发完整J2EE解决方案的八个步骤

开发完整J2EE解决方案的八个步骤开发完整的J2EE解决方案需要经过八个步骤,包括需求分析、架构设计、数据库设计、编码实现、单元测试、集成测试、部署上线、维护升级。
下面将详细介绍这八个步骤。
1. 需求分析(Requirement Analysis)需求分析是任何项目的起点,也是非常重要的一步。
在J2EE项目中,需求分析包括对系统的功能需求、性能需求、安全需求以及用户体验需求等进行详细的分析和明确。
2. 架构设计(Architecture Design)在需求分析的基础上,进行系统的架构设计。
架构设计主要包括选择和设计系统的逻辑架构、物理架构、分层架构、展示层、业务逻辑层、数据访问层和集成层等。
同时也需要考虑一些横切关注点如事务管理、安全性、缓存、负载均衡等。
3. 数据库设计(Database Design)数据库设计是指根据需求分析的结果,设计和规划数据库的结构,包括实体关系模型(ER模型)、表结构设计、索引设计、触发器、存储过程等。
4. 编码实现(Coding)在架构设计和数据库设计的基础上,进行编码实现。
编码实现主要分为前端实现和后端实现两部分,前端实现包括UI设计、CSS样式的编写以及前端的一些交互逻辑实现,后端实现主要是根据架构设计和数据库设计的要求进行业务逻辑和数据持久化的实现。
5. 单元测试(Unit Testing)单元测试是在编码实现阶段进行的,主要是对每一个单独的模块或者方法进行测试。
通过判断每个模块或者方法是否按照预期的结果返回,来验证它的正确性和可靠性。
6. 集成测试(Integration Testing)集成测试是在单元测试之后进行的,主要是对已经通过单元测试的各个模块进行组合测试,验证模块之间的协作是否正确,数据的传递和处理是否正确,并验证整个系统的功能完整性和稳定性。
7. 部署上线(Deployment)在完成集成测试并且通过验收后,对系统进行部署和上线。
部署工作包括配置硬件环境、软件环境、网络环境等,并将已经通过测试的系统代码和相关资源部署到服务器上。
J2EE开发要点

获得对实体的home接口的引用(使用getEJBLocalHome或
getEJBHome方法) 把引用作为方法调用的参数或者返回值传递(限于使用本地接口的 本地方法)
实体bean的主键类
实体bean的主键是实体bean
个实体对象 主键是容器在创建实体bean时,赋予实体bean实例的唯一性标识 使用一个单域作为表的(主)键 通常该域的值是整数或一个唯一确定一行的字符串 需要在bean的DD中定义存储这个主键的类 对于CMP bean需要在DD中声明主键对应的域 使用多域作为主键 需定义一个主键类用于表示实体bean的主键 需要声明实现Serializable接口
删除一个会话bean
客户方使用完会话bean以后,必须调用会话对象或home对象 (仅适用于远地对象)的remove方法删除这个会话bean。
定义会话bean的remote接口
会话bean的remote接口定义了会话bean的客户方视图。组件的远地或
本地接口是定义要展现给会话bean客户方的业务方法的地方。
EJB及其它对象的定位
EJB应用中,需要某种设施一致、动态地定位资源(EJB、数据源等)
以保证系统的可移植性和可伸缩性。EJB使用Java名字与目录服务支持 此功能的实现。
EJB可使用的名字与目录服务有很多种,如RMI
Registry、CORBA CosNaming、LDAP等。EJB使用J2EE标准API JNDI使应用能够以标准 的方式访问已有的和正在出现的名字与目录服务。
public void ejbPassivate() throws EJBException, RemoteException;
public void ejbLoad() throws EJBException, RemoteException; public void ejbStore() throws EJBException, RemoteException; public void ejbRemove() throws RemoveException, EJBException, RemoteException; public void unsetEntityContext() throws EJBException, RemoteException;
J2EE课程设计《项目开发指导》——第10章 高效和高质量地编程开发和实现(第1部分)
第10章高效和高质量地编程开发和实现(第1/3部分)在软件系统的开发实现过程中,不仅要求软件系统的设计人员要保证系统设计结果的合理性,也要求软件系统的编程人员要快速和高效地编程开发和实现软件系统中的各个功能模块的程序,而且还需要保证和提高程序代码的编程质量——“多、快、好、省”是软件系统开发人员的主要工作目标。
软件系统的开发人员如何能够提高代码的编程质量?软件系统质量的基本内涵主要是指“内在的系列特征满足要求的程度”,而这里所说的“内在的系列特征满足要求的程度”是指满足软件项目的“内部用户”(开发组中的各个成员)和“外部用户”(软件系统的使用者)的要求。
软件系统的“外部用户”对软件系统的主要要求是:系统功能的正确性、系统性能的高效性和系统程序的健壮性、系统操作的易用性和系统运行的可靠性和稳定性;而软件系统的“内部用户”对软件系统的主要的要求是:软件系统中的各种程序代码的可维护性高(程序代码的可读性好、容易调试和排错、程序代码容易实现功能的扩展)和可测试性高、可移植性好。
作者在本章中,将从与项目开发过程中有关的“人员管理”、“团队构建”、“开发方法”、“开发工具”和“设计模式”等方面为读者阐述如何提高软件系统项目开发过程中程序代码的编程效率和提高代码编程质量的各种方法。
1.1如何提高项目开发效率和编程实现速度读者对“时间是生命、效率是金钱”这句话的含义应该是非常了解的,同样在软件系统的开发实现中也应该要追求效率——低效率意味着高成本和缺少竞争力。
但如何能够提高项目开发中的效率、并且在追求高效率的同时又不降低软件系统的整体质量和品质?但提高开发效率,其实是一个系统工程!需要从与软件系统开发有关的各个方面进行优化和改进。
作者认为主要是从与项目开发过程中有关的“人员管理”、“团队构建”、“开发方法”、“开发工具”和“设计模式”等方面进行综合考虑。
1.1.1选择合适的开发方法和合理地组建项目团队1、影响软件系统开发效率和编程速度的各种可能的因素软件系统项目的开发实现或者生产与其他行业的产品生产方式有很大的差别——软件系统产品是开发人员的脑力劳动的产物,因此对软件项目的生产过程的管理和产品质量的控制方法有它特有的模式和要求。
软件开发框架(J2EE)软件开发框架(J2EE)-学习指南
《软件开发框架(J2EE)》课程学习指南《软件开发框架(J2EE)》是是软件技术专业核心技能课程。
其先修课程为《Java程序设计》、《网页设计技术》、《数据库基础》,通过先修课程的学习使学生掌握面向对象程序设计思想及基本的Web程序代码编写技能、数据库系统的基础知识,为学习本课程打好坚实的基础。
一、学前要求学习本课程需要有一定的知识能力基础,配合项目实训,还需要配置一台计算机,对计算机有一定的要求,具体要求如下:(一) 必备基础学习本课程的学习者必须具备一定的基础:1.会熟练使用计算机,如常用操作系统Windows XP,还有常用软件如Word,Excel等;2.一定的英语阅读能力,掌握基本的英语词汇;3.一定的程序设计基础,部分项目任务或习题需要用到Java程序设计;(二) 软硬件环境以下是学习软件开发框架(J2EE)需要的环境配置:表1 软件开发框架(J2EE)环境名称相关配置说明硬件环境PCCPU: Intel P4 2GHz或AMD Athlon 2GHz以上内存: 1G或以上硬盘: 40G或以上网卡:有线10/100Mbps或无线网卡网络宽带(1Mbps以上)接入Internet,用于网上学习软件环境操作系统OS Windows 2000/XP/Vista/7开发环境My Eclipse、Tomcat、MySQL二、学习目标与要求通过任务引领的软件开发框架(J2EE)的实践活动,掌握常用的软件开发框架,培养学生具有使用Struts规范程序结构能力、使用Hibernate简化数据库访问操作能力和使用Spring提高开发效率能力,整合三个框架技术,开发基于J2EE框架的Web应用系统的职业能力。
同时培养吃苦耐劳、爱岗敬业、团队协作的职业精神和诚信、善于沟通与合作的良好品质,为发展职业能力奠定良好的基础。
具体要求如下:✓使用Struts框架开发、测试、维护Web应用项目的能力;✓使用Hibernate框架开发、测试、维护Web应用项目的能力;✓使用Spring框架开发、测试、维护Web应用项目的能力;✓使用Struts与Hibernate、Spring框架技术开发与设计的能力,能够使用工具管理项目代码能力;✓具备勤劳诚信、善于协作配合、善于沟通交流等职业素养。
J2EE技术下的信息系统设计与开发
J2EE技术下的信息系统设计与开发引言:在当前信息化高速发展的时代,J2EE技术成为开发企业级应用程序的首选技术。
本文将讨论J2EE技术下的信息系统设计与开发,包括系统架构的设计、数据库设计、前端界面设计和J2EE技术的开发实现等方面。
一、系统架构设计1.1 体系结构设计J2EE技术下的系统架构设计需要考虑分布式系统的特点。
分布式系统架构的核心问题之一是解决分布式环境下的通信问题。
在分布式系统中,不同的服务模块需要通过网络进行交换信息,因此需要考虑到通信协议、通信方式等方面。
1.2 中间件选择中间件负责协调系统中的不同模块之间的通信和交互操作,可以极大地降低应用程序的开发难度。
J2EE平台下使用的中间件包括WebSphere、WebLogic、JBoss等,这些中间件具有较高的性能和可靠性。
在选择中间件时,需要考虑到系统的规模和性能需求等方面。
二、数据库设计2.1 关系型数据库关系型数据库是目前最为常用的数据库模型。
在J2EE平台下使用的关系型数据库主要为Oracle、MySQL、SQL Server等。
需要考虑到数据表设计、数据关系建立、数据类型选择等问题。
2.2 NoSQL数据库NoSQL数据库主要用于非关系型数据库,在J2EE平台下使用的NoSQL数据库主要为MongoDB、Cassandra等。
NoSQL数据库的特点是高可扩展性和高性能,并且能够支持非结构化数据。
使用NoSQL数据库需要考虑到系统架构和性能等方面。
三、前端界面设计3.1 用户体验设计优秀的用户体验设计可以提高用户对产品的美好感受,并且能够提高用户满意度和用户黏性。
在J2EE技术下,前端开发需要考虑到用户的交互行为和用户使用场景等方面,以便能够提供更加友好的用户体验。
3.2 响应式设计响应式设计是指能够适应不同设备和不同屏幕的布局设计。
在J2EE平台下,响应式设计既能够提高用户体验,也能够提高网站的搜索引擎优化,从而能够使网站更加容易被搜索引擎所发现。
J2EE架构下的电子商务系统设计与开发
J2EE架构下的电子商务系统设计与开发随着互联网技术的不断发展,电子商务已经成为了现代商业的重要形式,越来越多的企业开始将其业务转移到网上。
而在这个过程中,一个高效稳定的电子商务系统将是至关重要的。
而在J2EE架构下,设计和开发这样一个系统也有着其独特的方法和技巧。
首先,J2EE架构下的电子商务系统应该是一个基于分层架构的系统。
这个分层架构通常被划分为几个不同的层次,包括界面层、业务逻辑层、数据访问层和底层基础设施层。
这个分层结构能够使得系统更加清晰易于维护,同时也能够提高系统的灵活性和可扩展性。
在这个分层结构中,界面层是直接与用户进行交互的部分,它通常包括网站页面、移动应用等。
业务逻辑层则是连接上下两层的桥梁,它主要负责处理与业务相关的逻辑,例如订单管理、用户分类等。
数据访问层则是与底层数据库进行交互的部分,它负责实现数据的读写和更新。
最后的基础设施层则是负责提供系统的基础设施,例如服务器、分布式缓存、消息队列等。
在这个分层架构中,每个层次之间都应该有着清晰的接口和约定,这样才能够保证系统的高效稳定同时也能够提高系统的可维护性。
其次,在J2EE架构下的电子商务系统中,选择合适的框架也是非常重要的。
J2EE平台已经提供了许多成熟的框架,可以用来加速系统的开发和部署。
例如,Struts框架可以用来实现网站的MVC模式,Spring框架可以用来进行控制反转和依赖注入,Hibernate框架可以用来进行数据库的ORM映射等。
在应用这些框架时,需要根据实际的业务需求和系统架构进行选择并进行深入了解和学习。
此外,在电子商务系统的设计和开发中,还需要考虑到系统的安全性和稳定性。
安全问题应该贯穿于整个系统的开发和运营过程中,同时也要在系统的端到端架构中仔细考虑数据的安全传输和存储。
同时,对于系统的稳定性,应该考虑到系统的高可用性和容错性。
这可以通过使用容错性强的硬件和软件、进行系统监控和日志记录、增加备份和恢复措施等来实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
初学者如何开发出高质量J2EE系统
2010-01-27 14:03 | 8558次阅读 | 【已有49条评论】发表评论
CSDN Java频道 | 收藏到我的网摘
J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向。
首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,当然目前主要是.NET 和Java两大主流体系。
J2EE可以说指Java在数据库信息系统上实现,数据库信息系统从早期的dBase、到Delphi/VB等C/S结构,发展到B /S(Browser浏览器/Server服务器)结构,而J2EE主要是指B/S结构的实现。
J2EE又是一种框架和标准,框架类似API、库的概念,但是要超出它们。
如果需要详细了解框架,可先从设计模式开始学习。
J2EE是一个虚的大的概念,J2EE标准主要有三种子技术标准:WEB技术、EJB技术和JMS,谈到J2EE应该说最终要落实到这三个子概念上。
这三种技术的每个技术在应用时都涉及两个部分:容器部分和应用部分,Web容器也是指Jsp/Servlet容器,你如果要开发一个Web应用,无论是编译或运行,都必须要有Jsp/Servlet 库或API支持(除了JDK/J2SE以外)。
Web技术中除了Jsp/Servlet技术外,还需要JavaBeans或Java Class实现一些功能或者包装携带数据,所以Web技术最初裸体简称为Jsp/Servlet+JavaBeans系统。
谈到JavaBeans技术,就涉及到组件构件技术(component),这是Java的核心基础部分,很多软件设计概念(设计模式)都是通过JavaBeans实现的。
JavaBeans不属于J2EE概念范畴中,如果一个JavaBeans对象被Web技术(也就是Jsp/Servlet)调用,那么JavaBeans就运行在J2EE的Web容器中;如果它被EJB调用,它就运行在EJB容器中。
EJB(企业JavaBeans)是普通JavaBeans的一种提升和规范,因为企业信息系统开发中需要一个可伸缩的性能和事务、安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系统。
至此,JavaBeans组件发展到EJB后,并不是说以前的那种JavaBeans形式就消失了,这就自然形成了两种JavaBeans技术:EJB 和POJO,POJO完全不同于EJB概念,指的是普通JavaBeans,而且这个JavaBeans不依附某种框架,或者干脆可以说:这个JavaBeans是你为这个应用程序单独开发创建的。
J2EE应用系统开发工具有很多:如JBuilder、Eclipse等,这些IDE首先是Java开发工具,也就是说,它们首要基本功能是可以开发出JavaBeans或Java class,但是如果要开发出J2EE系统,就要落实到要么是Web技术或EJB技术,那么就有可能要一些专门模块功能(如eclipse需要lomboz插件),最重要的是,因为J2EE系统区分为容器和应用两个部分,所以,在任何开发工具中开发J2EE都需要指定J2EE容器。
J2EE容器分为WEB容器和EJB容器,Tomcat/Resin是Web容器;JBoss是EJB容器+Web容器等,其中Web容器直接使用Tomcat实现的。
所以你开发的Web应用程序可以在上面两种容器运行,而你开发的Web+EJB应用则只可以在JBoss服务器上运行,商业产品Websphere/Weblogic等和JBoss属于同一种性质。
J2EE容器也称为J2EE服务器,大部分时它们概念是一致的。
如果你的J2EE应用系统的数据库连接是通过JNDI获得,也就是说是从容器中获得,那么你的J2EE应用系统基本与数据库无关,如果你在你的J2EE 应用系统耦合了数据库JDBC驱动的配置,那么你的J2EE应用系统就有数据库概念色彩,作为一个成熟需要推广的J2EE应用系统,不推荐和具体数据库耦合,当然这其中如何保证J2EE应用系统运行性能又是体现你的设计水平了。
衡量J2EE应用系统设计开发水平高低的标准就是:解耦性;你的应用系统各个功能是否能够彻底脱离?是否不相互依赖,也只有这样,才能体现可维护性、可拓展性的软件设计目标。
为了达到这个目的,诞生各种框架概念,J2EE框架标准将一个系统划分为WEB和EJB主要部分,当然我们有时不是以这个具体技术区分,而是从设计上抽象为表现层、服务层和持久层,这三个层次从一个高度将J2EE分离开来,实现解耦目的。
因此,我们实际编程中,也要将自己的功能向这三个层次上靠,做到大方向清楚,泾渭分明,但是没有技术上约束限制要做到这点是很不容易的,因此我们还是必须借助J2EE具体技术来实现,这时,你可以使用EJB规范实现服务层和持久层,Web技术实现表现层;
EJB为什么能将服务层从Jsp/Servlet手中分离出来,因为它对JavaBeans编码有强制的约束,现在有一种对JavaBeans弱约束,使用Ioc模式实现的(当然EJB 3.0也采取这种方式),在Ioc模式诞生前,一般都是通过工厂模式来对JavaBeans约束,形成一个服务层,这也是是Jive这样开源论坛设计原理之一。
由此,将服务层从表现层中分离出来目前有两种可选架构选择:管理普通JavaBeans(POJO)框架(如Spring、JdonFramework)以及管理EJB的EJB框架,因为EJB不只是框架,还是标准,而标准可以扩展发展,所以,这两种区别将来是可能模糊,被纳入同一个标准了。
但是,个人认为:标准制定是为某个目的服务的,总要牺牲一些换取另外一些,所以,这两种架构会长时间并存。
这两种架构分歧也曾经诞生一个新名词:完全POJO的系统也称为轻量级系统(lightweight),其实这个名词本身就没有一个严格定义,更多是一个吸引人的招牌,轻量是指容易学习容易使用吗?按照这个定义,其实轻量Spring等系统并不容易学习;而且EJB 3.0(依然叫EJB)以后的系统是否可称为轻量级了呢?
前面谈了服务层框架,使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关,一般是通过标签库(taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。
这样,表现层和服务层的分离是通过两种框架达到目的,剩余的就是持久层框架了,通过持久层的框架将数据库存储从服务层中分离出来是其目的,持久层框架有两种方向:直接自己编写JDBC等SQL语句(如iBatis);使用O/R Mapping技术实现的Hibernate和JDO技术;当然还有EJB中的实体Bean技术。
持久层框架目前呈现百花齐放,各有优缺点的现状,所以正如表现层框架一样,目前没有一个框架被指定为标准框架,当然,表现层框架现在又出来了一个JSF,它代表的页面组件概念是一个新的发展方向,但是复杂的实现让人有些忘而却步。
在所有这些J2EE技术中,虽然SUN公司发挥了很大的作用,不过总体来说:网络上有这样一个评价:SUN的理论天下无敌;SUN的产品用起来撞墙;对于初学者,特别是那些试图通过或已经通过SUN认证的初学者,赶快摆脱SUN的阴影,立即开溜,使用开源领域的产品来实现自己的应用系统。
最后,你的J2EE应用系统如果采取上面提到的表现层、服务层和持久层的框架实现,基本你也可以在无需深刻掌握设计模式的情况下开发出一个高质量的应用系统了。
还要注意的是: 开发出一个高质量的J2EE系统还需要正确的业务需求理解,那么域建模提供了一种比较切实可行的正确理解业务需求的方法,相关详细知识可从UML角度结合理解。
当然,如果你想设计自己的行业框架,那么第一步从设计模式开始吧,因为设计模式提供你一个实现JavaBeans或类之间解耦参考实现方法,当你学会了系统基本单元JavaBean或类之间解耦时,那么系统模块之间的解耦你就可能掌握,进而你就可以实现行业框架的提炼了,这又是另外一个发展方向了。
以上理念可以总结为一句话:
J2EE开发三件宝: Domain Model(域建模)、patterns(模式)和framework(框架)。
推荐一套高质量的J2EE开源系统:JPestore。