技术开发 频道

JDeveloper 11g初感觉

【IT168 技术文档】1. ADF 实践

1.1. 简言

ADF实践__JDeveloper10g与JDeveloper11g

    日前,本人分别在JDeveloper10g和JDeveloper11g上做了个ADF数据库应用的小DEMO.感觉10g和11g存在着比较大的差异.首先: 11g在原有功能上增加了对Ajax功能的支持,可以说功能更加强大,但在实际使用中,我觉得10g的使用性更好,更易于开发.或许是因为11g新增的功能吧,未能深入了解到.以下几点,是我在做此DEMO过程中遇到的问题。

1.2. 10g与11g问题简要汇总

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);

    在JDeveloper 10g中:

其通过TopLink可生成类Users.java

表字段:userId生成属性: private Integer userId;

而在JDeveloper 11g中 :

竟然是: private BigDecimal userId;

2.Create Object-Relational Map

    我在用TopLink从数据表生成对象POJO时,在10g中,选择DataModel(表示了应用的数据模型,应用系统通过DataModel来执行数据访问操作。) –- New -- Business Tier – TopLink – Java Objects from Tables.

    可以通过Connection下拉列表选择我们之前建立的数据库链接。

    在11g中,我们通过此操作,在Connection: 下拉列表中是选不到之前建立的数据库链接的. 需要我们在Database Navigator面板中选中我们建立的数据库链接,将其拖动到Project面板中的DataModel上。这时我们才能使用之前建立的数据库链接。

    个人认为: 在10g中,建立的Connection,将为所有的工程共同使用。而在11g中,数据库链接独立于所有工程,需手动将其应用于现有工程。

后表之间关系的生成机制

    通过TopLink由表影射生成POJO对象.表之间的关系,在10g和11g中,TopLink的处理机制有所不同:

10g中:

private List expertiseAreasCollection; private List serviceRequestsCollection; private Integer prodId; private String name; private String image; private String description;

    在11g中:

    关于Products.java,其中生成的属性为:

private Collection expertiseAreasCollection; private Collection serviceRequestsCollection; private BigDecimal prodId; private String name; private String image; private String description;


注: 10g中,关于表之间影射关系(1对多,多对1,等)生成的集合类为List ,11g中,生成的集合类为Connection. List是链表,Collection是集合,比List抽象层次更高.List可以按照索引单独访问一组对象, Collection可以用foreach循环访问其中的元素, List执行效率应该比Collection更高,实际中使用List的情况应该更多.

    不知道为什么11g生成的属性均为Collection?有待于进一步研究.

代码生成机制,代码格式化效果

    在10g中,代码格式化效果更好,比11g智能,不知10g与11g代码格式化使用的是何插件?如何控制代码生成规则?

例,在10g中,

Public Integer getNextLineItem(){

}

    方法中的{},在输入完{}后,光标停留在大括号之间,按回车键,代码格式自动整理好,如上.另起一行对其. 在11g中, 回车后,下行代码空出两个字符.

Public Integer getNextLineItem(){

}

    以上可见,10g中的效果更佳.

Defining Page Flow and Navigation

    将10g和11g中,关于页面Diagram和page创建过程稍有不同.此差别来源于所用视图层开发控件的变化.10g中视图层开发的组件库主要为: ADF Faces Components;

ADF Faces HTML; JSF Core; JSF HTML.

如: 10g中,在Components组件面板中选择ADF Faces Core时,可以使用控件: PanelPage。

0
相关文章