| |
基于J2EE的电子商务网站实例解析 |
|
时间: 2006-05-24 来自:天极开发 |
 |
|
《实施篇》
本篇主要介绍该平台的具体实现过程。根据软件工程的相关理论,结合笔者多年的开发经验,网站开发一般尊循以下六步骤:
1.
收集、整理网站需求。
2. 根据网站需求,构想网页的交互情景(即USE
CASE),并设计出网站的原形(Prototype)。
3. 设计出实例化对象以及后台数据库结构。
4.
采用ORM工具,建立实例化对象与后台数据库之间的映射关系。
5.
根据网站交互需求,定制后台Action,以处理用户动作。
6.
修改网站原形(Prototype)为动态页面(JSP文件),将Action处理结果嵌入到动态页面中返回给客户端。
在这六个步骤中,第一步实际已经在《准备篇》里已经给出了,下面重点讲解后面几个步骤。
1.
网站原形(Prototype)
网站原形是对一个网站功能的页面级描述,即看到网站原形就好比看到一个真实的网站一样,只是网站原形并没有嵌入动态代码,而且页面之间也缺乏关联而已。
网站原形的开发为纯静态页面的开发,制作网站原形的关键在于将网站功能需求转化为人机界面。
如易网的网站原形制作下载地址:http://www.routease.com/download/ruyinew924.rar
2.
OOP设计与后台数据库设计
借助强大的ORM开发工具,可以将OOP与数据库的设计同时进行(即可以同时实施上面步骤的3,4步),这也是ORM工具最大特点。本项目采用Oracle公司的Toplink作为ORM开发工具。以下简要介绍Toplink开发过程。
1)
打开Toplink的Mapping Workbench组件,然后新建一个Mapping 工程。
2)
配置工程的属性,即在"选项"面板上设置工程路径以及Java对象源代码的路径。
3)
配置数据库登陆参数,包括应用访问数据库的URL、用户名、密码等。
完成以上三步,就可以根据应用的需求来开发Java类。在Mapping
Workbench里新建一个描述符(实际就是有一个Java类),根据需求来添加属性,并自动生成Set/Get方法。一旦完成Java类的开发后,选择"自动映射到数据库"的选项,即可实现数据库表的自动创建。(Toplink的最大优势就是在定制好Java类之后可以自动生成数据库的表结构)。
鉴于国内Toplink方面的资料较少,这里介绍一下Toplink生成的工程文件RouteaseMappingProject,该工程文件在web服务器启动的时候装载,可以理解为客户程序对数据库访问的接口程序,他有三类方法:
·构造函数
主要是调用oracle.toplink.sessions.Project的addDescriptor方法,其作用是将数据库和Java对象之间的映射关系加入到Project
中。代码示范如下:
public RouteaseMappingProject()
{ addDescriptor(buildAccountDescriptor()); addDescriptor(buildPhoneDescriptor()); ……. } | ·applyLogin方法
它处理客户程序登陆数据,并配置一些存取数据库的参数,比如缓冲池等。代码示范为:
public void applyLogin() { //配置数据库访问参数 DatabaseLogin login =
new DatabaseLogin(); login.usePlatform(new
oracle.toplink.oraclespecific.Oracle9Platform()); login.setDriverClassName("oracle.jdbc.driver.OracleDriver");
login.setConnectionString(ApplicationConfiguration.get(ConfigurationConstants.DB_CON_STR));
login.setUserName(ApplicationConfiguration.get(ConfigurationConstants.DB_USER));
login.setPassword(ApplicationConfiguration.get(ConfigurationConstants.DB_ENCRYPTED_PASSWORD)); //
设置数据库参数 login.setUsesNativeSequencing(true); login.setSequencePreallocationSize(1); login.setShouldBindAllParameters(false); login.setShouldCacheAllStatements(false); login.setUsesByteArrayBinding(true); login.setUsesStringBinding(false); if
(login.shouldUseByteArrayBinding()) { // Can only be used with
binding. login.setUsesStreamsForBinding(false); } login.setShouldForceFieldNamesToUpperCase(false); login.setShouldOptimizeDataConversion(true); login.setShouldTrimStrings(true); login.setUsesBatchWriting(false); if
(login.shouldUseBatchWriting()) { // Can only be used with batch
writing. login.setUsesJDBCBatchWriting(true); } login.setUsesExternalConnectionPooling(false); login.setUsesExternalTransactionController(false); setLogin(login); } | ·建立映射关系
Toplink通过类似于builXXXDescriptor方法来建立Java对象与数据库表字段之间的对应关系,示范代码如下:
public Descriptor buildAccountDescriptor() { Descriptor descriptor
= new
Descriptor(); descriptor.descriptorIsAggregate(); descriptor.setJavaClass(com.routease.db.vo.user.Account.class); descriptor.setAlias("Account"); //
Mappings. //建立Account
对象的deposit属性与数据库表的DEPOSIT字段的对应关系 DirectToFieldMapping depositMapping =
new
DirectToFieldMapping(); depositMapping.setAttributeName("deposit"); depositMapping.setFieldName("DEPOSIT"); descriptor.addMapping(depositMapping); … return
descriptor; } |
|
|
|
|
|
|
|
|