扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:开发者在线 2007年08月22日
如果你跟我一样的话,那么想要在业余的时间里学习一门新的编程技术可能是一件十分困难的事情。除非学习这种技术是你工作急需的,否则你不会有什么动力推动自己去学习。我一直就是这样,对于Oracle ADF(应用程序开发框架)也是如此。
我知道我应该去学它,因为它代表了自定义创建用于Oracle数据库的表单和报告的未来方向。但是我当前的工作性质要求自己把主要精力放在以前的技术上——Oracle Forms and Reports上。当手头上的工作占去了我所有精力的时候,我再也没有时间也没有动力去关心未来的技术。
最后,我下定决心,要学习它的唯一途径是找到一个带有强迫性质的事情——也就是能够把我懒得动弹的程序员的屁股挪到ADF这边的事情。我意识到写这篇博客就具有这种强迫性。因此我准备下面几篇文章的内容就放在ADF上。
声明:可能会有些事情我完全做错了,因为我以前没有接触过这项技术。每次写博客,我都会尽全力去学习新内容。这也就是说,我博客里写到的东西可能完全都是错的,不到下一次写博客我可能一直都不会察觉。
但是,我不介意在公众面前出丑,所以让我们开始吧。
首先你需要安装版本正确的JDeveloper。我用的是从Oracle的网站上下载的10.1.3.3版。你要确保下载的是Studio Edition,因为其他两个版本都不带ADF的组件。
对于那些刚接触Oracle应用程序开发的人来说,ADF是一个集成到了Oracle JDeveloper里的合集。它有一个底层的Java框架,支持臭名昭著的MVC(模型视图控制程序)的所有三个层,有一系列ADF向导,帮助你开始进行开发。它还有各种ADF编辑器,让你能够修改通过ADF向导创建的开始块。
启动ADF应用程序的方式与启动任何JDeveloper里的应用程序的方式没有什么不同——使用创建应用程序向导(Create Application wizard)——最简单的方式是右击“应用程序(Application)”面板的“应用程序(Application)”节点(除非你重新调整了面板的位置,否则它就会在JDeveloper的左上角)。右击弹出来的菜单的第一个选项就是“新应用程序(New Application)”。点击这一选项,向导就会跳出来:
上面大多数的选项一看就明白——输入应用程序的名称、文件所在的位置,以及在创建新的类时,JDeveloper应该使用的前缀。与我们密切相关的是“应用程序模板(Application Template)”。你必须选择一个包括ADF的模板;在本文中,我已经选择了支持JSF和ADF BC(ADF 业务组件)的“Web应用程序(Web Application)”。
完成设置之后,向导会在新应用程序里创建两个工程——一个用于模型,另一个用于视图控制程序。在本文里,我主要关注的是模型;我会在今后的文章里讨论视图控制程序。
一般来说,我发现在真正需要数据库连接之前就进行连接,JDeveloper的工作状态会最佳。所以,在使用其他ADF向导之前,你应该首先进“连接(Connection)”选项卡创建数据库连接。
然后回到“应用程序(Application)”选项卡。点击左边的小加号展开新应用程序树(如果它没有展开的话)。现在点击应用程序树上的“模型(Model)”节点,在弹出菜单上选择“新建(New)”。这将转到“新图库(New Gallery)”画面。如果你像我那样选择“Web应用程序”模板,下面这样一个列表就会出现:
从左边一栏中打开“业务层(Business Tier)”,然后选择“ADF业务组件(ADF Business Components)”。在右边一栏,你会看到可用的组件。我们准备从创建一个“实体对象(Entity Object)”来代表表格开始,所以选中它,然后点“确定(OK)”。
你会看到一个对话框,你需要在里面指定要使用的数据库连接。如果以前没有创建过连接,那么你就要在这里点击“新建(New)”按钮。但是如果以前已经创建过连接,那么它应该会出现在下拉菜单里。选中它,如果它是一个Oracle数据库,你可以接受剩下的默认设置,然后点击“确定(OK)”。如果不是,你就需要调整设置以满足连接的要求。
这会启动“创建实体对象(Create Entity Object)”向导。点击“下一步(Next)”,选择你准备用这个对象建模的表格。向导底部有一些复选框,你可以勾选它们查看除了这些表格之外的其它数据库对象,比如视图和同义词。在这里,我就弄简单一点,只建立一个表格模型。我的表格叫做ConferenceLine,我还把它用作我的对象的名称。
点击“下一步(Next)”会显示表格的可用属性列表。你甚至可以为这个对象创建属于它自己的属性;再强调一遍,对于这个第一次尝试,我准备坚持严格使用底层表格模型。再次点击“下一步(Next)”会显示下面的“属性设置(Attribute Settings)”画面:
到了这一步情况就有点复杂了。一般来说,你可能可以将每个属性都设置为默认。在本文中,我碰巧知道ID字段有一个触发器来自动递增ID。我想要告诉ADF这是一个自动递增字段,这样在更新和插入的时候它就知道自动同步了。这就是为什么在上面的屏幕截图里,你会看到我在ID字段里把类型选择为DBSequence。
严格来说,如果只是要创建一个视图对象,你可能就不用担心这个。但是,如果你计划通过这个模型对象进行更新/插入操作,那么你应该像刚才那样告诉它ID字段应该如何设置。
你可以点击“下一步(Next)”完成后面几个画面的设置,但是在这个时候,你还可以点击“完成(Finish)”让JDeveloper为你创建对象。你现在应该可以看到“模型(Model)”下面有一个叫做“应用程序来源(Application Sources)”的文件夹。你新建的实体对象就会出现在这个文件夹下面。
现在你要创建一个“视图对象(View Object)”来使用这个实体。右击模型节点,选择“新建(New)”,就创建好了视图对象。与实体对象的向导类似,视图对象最开始的一个屏幕显示是让你选择创建一个视图,用来更新或者只显示来自实体的数据。(我觉得再选择映射实体之前就进行这一步操作是十分奇怪的。就我看来,你应该首先选择实体,然后指定是取得、是可以更新、还是可以查看。)你先前创建的实体应该会在视图对象向导里出现。选择它然后选择你想要包含在这个视图里的所有属性。这个时候,你可以点击“完成(Finish)”让它创建一个新的视图对象。
但是等一下……我们还没有全部完成。最后,你会重复相同的步骤,但是这一次创建的是“应用程序模块(Application Module)”。在使用向导的时候,刚刚创建的视图对象应该会出现,你会希望选择它用于新应用程序模块。一旦看到这个屏幕显示,点击“完成(Finish)”就可以了。
到了这个时候,JDeveloper已经为你创建了很多Java和XML文件。你可以在“结构(Structure)”窗格中看到它们,但是你最想做的事情恐怕是要看看它们能够正常工作。
我想这是ADF更酷的一个特性之一。它这个时候不会让你制作一个真正的用户界面,它有一个内置的测试框架,让你检查新的应用程序模块是否工作正常。右击应用程序模块的名字,从弹出菜单中选择“测试(Test)”。JDeveloper会编译代码并通过一个窗口提示你选择一个应该用于这个测试的连接。选择你先前使用过的同一个连接,点击“连接(Connect)”。
组件浏览器(Component Browser)启动了,你的应用程序模块列在左边的一栏里:
在窗口的底部应该显示有先前在这个应用程序模块里连接的视图对象的名字。双击视图对象,如果连接正常,它会打开一个到表格的数据库浏览器。你可以插入新的纪录并浏览已有记录,以检验是否一切正常。
我知道有的人确实对JDBC非常非常在行,但是这些向导在大约30分钟里生成的代码可能会花掉我好几天的时间(如果不是一周的话)。明证就在用户界面里——从中间真的看得出一切是否值得。
我的下一步是看看你是否能够把这些后端组件连接到Web用户界面上。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。