<o:p> </o:p>
1.1. 简言
ADF实践__JDeveloper<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>与JDeveloper<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>
日前,本人分别在JDeveloper<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>和JDeveloper<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>上做了个ADF数据库应用的小DEMO.感觉<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>和<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>存在着比较大的差异.首先: <st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>在原有功能上增加了对Ajax功能的支持,可以说功能更加强大,但在实际使用中,我觉得<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>的使用性更好,更易于开发.或许是因为<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>新增的功能吧,未能深入了解到.以下几点,是我在做此DEMO过程中遇到的问题.
<o:p> </o:p>
1.2. <st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>与<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>问题简要汇总
1.TopLink表关系影射生成POJO对象问题
USERS表结构:
CREATE TABLE USERS (
USER_ID NUMBER(8,0) NOT NULL,
USER_ROLE VARCHAR2(10) NOT NULL,
EMAIL VARCHAR2(50) NOT NULL,
FIRST_NAME VARCHAR2(30) NOT NULL,
LAST_NAME VARCHAR2(30) NOT NULL,
STREET_ADDRESS VARCHAR2(40) NOT NULL,
CITY VARCHAR2(30) NOT NULL,
STATE_PROVINCE VARCHAR2(25),
POSTAL_CODE VARCHAR2(12),
COUNTRY_ID CHAR(2)
)
NOLOGGING
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645);
<o:p> </o:p>
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 314.25pt; HEIGHT: 269.25pt" type="#_x0000_t75"><v:imagedata o:title="T1" src="file:///C:\DOCUME~1\BeanSoft\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>
在JDeveloper <st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中:
其通过TopLink可生成类Users.java
表字段:userId生成属性: private Integer userId;
而在JDeveloper <st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>中 :
竟然是: private BigDecimal userId;<o:p></o:p>
2.Create Object-Relational Map
我在用TopLink从数据表生成对象POJO时,
在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中,选择DataModel(表示了应用的数据模型,应用系统通过DataModel来执行数据访问操作。) –- New -- Business Tier – TopLink – Java Objects from Tables.
如下图:可以通过Connection下拉列表选择我们之前建立的数据库链接。
<v:shape id="_x0000_i1026" style="WIDTH: 452.25pt; HEIGHT: 306pt" type="#_x0000_t75"><v:imagedata o:title="1" src="file:///C:\DOCUME~1\BeanSoft\LOCALS~1\Temp\msohtml1\01\clip_image002.png"></v:imagedata></v:shape>
<o:p> </o:p>
在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>中,我们通过此操作,在Connection: 下拉列表中是选不到之前建立的数据库链接的. 需要我们在Database Navigator面板中选中我们建立的数据库链接,将其拖动到
Project面板中的DataModel上。这时我们才能使用之前建立的数据库链接。
个人认为: 在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中,建立的Connection,将为所有的工程共同使用。
而在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>中,数据库链接独立于所有工程,需手动将其应用于现有工程。
<v:shape id="_x0000_i1027" style="WIDTH: 484.5pt; HEIGHT: 404.25pt" type="#_x0000_t75"><v:imagedata o:title="2" src="file:///C:\DOCUME~1\BeanSoft\LOCALS~1\Temp\msohtml1\01\clip_image004.png"></v:imagedata></v:shape>
<o:p> </o:p>
<o:p> </o:p>
后表之间关系的生成机制
通过TopLink由表影射生成POJO对象.表之间的关系,在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>和<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>中,TopLink的处理机制有所不同:
<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中:
private List expertiseAreasCollection;
private List serviceRequestsCollection;
private Integer prodId;
private String name;
private String image;
private String description;
<v:shape id="_x0000_i1028" style="WIDTH: 229.5pt; HEIGHT: 301.5pt" type="#_x0000_t75"><v:imagedata o:title="2" src="file:///C:\DOCUME~1\BeanSoft\LOCALS~1\Temp\msohtml1\01\clip_image006.png"></v:imagedata></v:shape>
<o:p> </o:p>
<o:p> </o:p>
在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>中:
<v:shape id="_x0000_i1029" style="WIDTH: 224.25pt; HEIGHT: 425.25pt" type="#_x0000_t75"><v:imagedata o:title="3333333333333333" src="file:///C:\DOCUME~1\BeanSoft\LOCALS~1\Temp\msohtml1\01\clip_image008.png"></v:imagedata></v:shape>
关于Products.java,其中生成的属性为:
private Collection expertiseAreasCollection;
private Collection serviceRequestsCollection;
private BigDecimal prodId;
private String name;
private String image;
private String description;
<o:p> </o:p>
注: <st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中,关于表之间影射关系(1对多,多对1,等)生成的集合类为List<o:p></o:p>
<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>中,生成的集合类为Connection.<o:p></o:p>
List是链表,Collection是集合,比List抽象层次更高.List可以按照索引单独访问一组对象, Collection可以用foreach循环访问其中的元素,<o:p></o:p>
List执行效率应该比Collection更高,实际中使用List的情况应该更多.<o:p></o:p>
不知道为什么<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>生成的属性均为Collection?有待于进一步研究. <o:p></o:p>
代码生成机制,代码格式化效果
在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中,代码格式化效果更好,比<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>智能,不知<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>与<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>代码格式化使用的是何插件?如何控制代码生成规则?
例,在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中,
Public Integer getNextLineItem(){
}
方法中的{},在输入完{}后,光标停留在大括号之间,按回车键,代码格式自动整理好,如上.另起一行对其. 在<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>中, 回车后,下行代码空出两个字符.
Public Integer getNextLineItem(){
}
以上可见,<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中的效果更佳.
Defining Page Flow and Navigation
将<st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>和<st1:chmetcnv w:st="on" unitname="g" sourcevalue="11" hasspace="False" negative="False" numbertype="1" tcsc="0">11g</st1:chmetcnv>中,关于页面Diagram和page创建过程稍有不同.此差别来源于所用视图层开发控件的变化<st1:chmetcnv w:st="on" unitname="g" sourcevalue=".1" hasspace="False" negative="False" numbertype="1" tcsc="0">.10g</st1:chmetcnv>中视图层开发的组件库主要为: ADF Faces Components;
ADF Faces HTML; JSF Core; JSF HTML.
如: <st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>中,在Components组件面板中选择ADF Faces Core时,可以使用控件: PanelPage,
如图1: SRDemoTemplate.jspx
分享到:
相关推荐
综上所述,Oracle JDeveloper 11g 不仅是一款强大的开发工具,而且还是构建基于 Oracle ADF 的现代应用程序的理想选择。通过其丰富的特性和对多种技术的支持,JDeveloper 能够帮助开发者高效地完成从设计到部署的全...
在网上没有找到关于JOracle JDeveloper 11g 快捷键的整理,所以个人整理了一下,有兴趣可参考。
Oracle JDeveloper 11g 是一个强大的集成开发环境(IDE),专为构建Java应用程序和Oracle融合中间件解决方案而设计。本教程将引导你了解JDeveloper 11g 11.1.1.2.0的主要组件,并教你如何利用它们创建一个基本的Java...
《Oracle JDeveloper 11g Handbook: A Guide to Oracle Fusion Web Development》是一本全面介绍Oracle JDeveloper 11g及其在Oracle Fusion Web开发中的应用的专业指南。本书由两位经验丰富的作者共同撰写:Duncan ...
《Oracle JDeveloper 11g Handbook - A Guide to Fusion Web Development》是一本专注于使用Oracle JDeveloper 11g进行Fusion Web开发的专业指南。本书不仅为开发者提供了全面的技术指导,还深入介绍了Oracle ...
Oracle JDeveloper 11g是一款强大的Java集成开发环境(IDE),专为构建企业级应用程序而设计,特别是基于Oracle Application Development Framework (ADF)的应用程序。在国际化(i18n)方面,JDeveloper提供了全面的...
本文将详细介绍如何使用JDeveloper 11g (11.1.1.6.0) 连接并操作SVN 2.0。 ### 在 JD 中使用 SVN 的目的 1. **版本控制**:通过与SVN的集成,JDeveloper能够追踪代码的修改历史,提供不同版本之间的比较和合并功能...
JDeveloper 11g是Oracle公司推出的一款强大的Java集成开发环境(IDE),专为构建企业级应用而设计。这款工具支持多种技术,包括Java EE、SOA、ADF(Oracle Application Development Framework)等,为开发者提供了一...
在从Oracle ADF JDeveloper 10g迁移到11g的过程中,开发者会面临一系列的技术挑战和步骤,这些都将在"10g到11g迁移文档"中详细阐述。 1. **版本差异**:Oracle ADF 11g引入了新的功能和改进,如增强的数据可视化、...
#### 一、Oracle JDeveloper 11g与ADF概述 **Oracle JDeveloper 11g**是一款强大的集成开发环境(IDE),专门用于构建企业级应用,包括Web应用程序、服务端应用和服务导向架构(SOA)解决方案。它支持Java EE标准,...
《使用Oracle JDeveloper 11g处理XML文档》一书由Deepak Vohra撰写,深入探讨了在Oracle集成开发环境(IDE)中创建、验证和转换XML文档的方法与技术。此书为读者提供了全面而深入的理解,涵盖了从基本概念到高级应用...
标题 "Packtpub.Processing.XML.documents.with.Oracle.JDeveloper.11g.May.2009.rar" 暗示我们关注的是一个关于使用Oracle JDeveloper 11g处理XML文档的教程或指南,发布于2009年5月。这个压缩包可能包含了详细的...
这篇文章主要讲解了如何将一个基于ADF 10.1.3的JSF应用程序,特别是使用ADF Faces组件的应用,迁移到JDeveloper 11g的环境中。作者Steve Muench是ADF开发团队的一员,他在2009年6月26日发布了这个1.4版的迁移指南。 ...
Oracle JDeveloper 10g是一款强大的集成开发环境(IDE),专为构建Java应用程序和Web服务而设计,尤其在Oracle应用服务器上表现卓越。这个工具集成了设计、编码、调试、测试和部署等整个开发过程,使得开发人员可以...
将Oracle XML Publisher与JDeveloper 10g集成,可以充分利用两者的优势,为开发人员提供一个高效的工作流程,用于设计、开发和部署复杂的业务报告。 集成过程主要包括以下几个关键步骤: 1. **安装和配置**:首先...
Oracle JDeveloper 10g是一款强大的集成开发环境(IDE),专为构建Java应用程序和Web应用程序设计,特别是针对Oracle技术栈。这款工具集成了多种功能,包括代码编辑、调试、性能分析、版本控制以及应用程序服务器的...
Oracle's Application Development Framework ... By implementing a range of real world use cases, you will gain invaluable and applicable knowledge for utilizing the ADF framework with JDeveloper 11gR2.
oracle相关开发工具介绍
Oracle 9i JDeveloper 是一款强大的集成开发环境(IDE),专为构建Oracle数据库应用程序而设计。这个工具集成了多种功能,包括设计、开发、调试和部署,为Java开发者提供了全面的支持。以下是对Oracle 9i JDeveloper...