频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

新手入门:使用 AppFuse 的七个理由

来源: 作者: 出处:巧巧读书 2006-09-09 进入讨论组
上一页 1 2 3 4 5 下一页 

 

理由 5:使用 AppGen 生成代码

    有些人会将代码生成称为代码气味的散播(code smell)。在他们的观点中,如果我们需要生成代码,那么很可能就会做一些错事。我倾向于这种确定自己代码使用的模式和自动化生成代码的能力应该称为代码香味的弥漫(code perfume)。如果我们正在编写类似的 DAO、管理器、操作或控件,并且不想为它们生成代码,那么这就需要根据代码的气味来生成代码。当然,当语言可以为我们提供可以简化任务的特性时,一切都是那么美好;不过代码生成通常都是一个必需 —— 通常其生产率也非常高 —— 的任务。

     AppFuse 中提供了一个基于 Ant 和 XDoclet 的代码生成工具,名叫 AppGen。默认情况下,常见的 DAO 和管理器都可以允许我们对任何普通老式 Java 对象(POJO)进行 CRUD 操作,但是在 Web 层上这样做有些困难。AppGen 有几个特性可以用来执行以下任务:

  • (使用 Middlegen 和 Hibernate 工具)从数据库表中生成 POJO
  • 从 POJO 生成 UI
  • 为 DAO、管理器、操作/控制器和 UI 生成测试

    在运行 AppGen 时,您会看到提示说 AppGen 要从数据库表或 POJO 中生成代码。如果在命令行中执行 ant install-detailed,AppGen 就会安装 POJO 特定的 DAO、管理器以及它们的测试。运行 ant install 会导致 Web 层的类重用通用的 DAO 和默认存在的管理器。

为了阐述 AppGen 是如何工作的,我们在 devworks MySQL 数据库中创建了如清单 2 所示的表:


清单 2. 创建一个名为 cat 的数据库表

    create table cat (
      cat_id int(8) auto_increment,
      color varchar(20) not null,
      name varchar(20) not null,
      created_date datetime not null,
      primary key (cat_id)
    ) type=InnoDB;

    在 extras/appgen 目录中,运行 ant install-detailed。这个命令的输出结果对于本文来说实在太长了,不过我们在清单 3 中给出了第一部分的内容:


清单 3. 运行 AppGen 的 install-detailed 目标

$ ant install-detailed
Buildfile: build.xml

init:
    [mkdir] Created dir: /Users/mraible/Work/devworks/extras/appgen/build
     [echo] 
     [echo] +-------------------------------------------------------+
     [echo] |             -- Welcome to the AppGen! --              |
     [echo] |                                                       |
     [echo] | Use the "install" target to use the generic DAO and   |
     [echo] | Manager, or use "install-detailed" to general a DAO   |
     [echo] | and Manager specifically for your model object.       |
     [echo] +-------------------------------------------------------+

    [input] Would you like to generate code from a table or POJO? (table,pojo)
table
    [input] What is the name of your table (i.e. person)?
cat
    [input] What is the name, if any, of the module for your table (i.e. organization)?

     [echo] Running Middlegen to generate POJO...

    要对 cat 表使用这个新生成的代码,我们需要修改 src/dao/com/ibm/dao/hibernate/applicationContext-hibernate.xml,来为 Hibernate 添加 Cat.hbm.xml 映射文件。清单 3 给出了我们修改后的 sessionFactory bean 的样子:


清单 4. 将 Cat.hbm.xml 添加到 sessionFactory bean 中

    <bean id="sessionFactory" class="...">
    <property name="dataSource" ref="dataSource"/>
    <property name="mappingResources">
        <list>
            <value>com/ibm/model/Role.hbm.xml</value>
            <value>com/ibm/model/User.hbm.xml</value>
            <value>com/ibm/model/Cat.hbm.xml</value>
        </list>
    </property>
    ...
</bean>

在运行 ant setup deploy 之后,我们就应该可以在部署的应用程序中对 cat 表执行 CRUD 操作了:


图 4. Cat 列表
新手入门:使用 AppFuse 的七个理由(图五)

图 5. Cat 表单
新手入门:使用 AppFuse 的七个理由(图六)

我们在上面的屏幕快照中看到的记录都是作为代码生成的一部分创建的,因此现在就有测试数据了。

打开: http://www.qqread.com/java/2006/09/a207608.html 更多文章 更多内容请看Solaris基础知识入门专题,或进入讨论组讨论。
上一页 1 2 3 4 5 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章