Letting seam-gen do the initial work

     你可以利用seam-gen来学习一下seam的创建者喜欢什么样的seam项目结构。这也是熟悉seam的好方法,观察下seam-gen如何改动程序,你就能了解你该干什么了。作为DIYer,你可能不太习惯让seam-gen替你干活。不过作者建议我们最好先让seam自己耍一下试试,咱就当回主子,当一次也行啊!听听超级大牛Gavin King是怎么说的吧!

Gavin King 写道
从seam-gen结构开始确实有很多有点。我在这些事儿上下足了功夫,让你一会儿就可以完成手工做几周才能做完的工作。可这不是魔法,另外,其他结构也行。

     作者一开始也没用seam-gen,不过在研究seam几个月后,发现用seam-gen能节省不少时间。因此不再认为seam-gen生成的代码就像一个新手写出来的那样。强烈建议大家也试试!

seam-gen的专业性

       seam-gen是程序工厂。他会创建基本的程序骨架,剩下你自己搭建这些东西的时间。你可以把这个骨架当成起点,利用seam-gen的代码生成功能来生产应用程序各项功能的代码。这些代码可以说明如何使用seam的几个特性。

       以前那些代码生成工具所产生的代码让人碰都不想碰。然而seam-gen可以证明,简单的ORM映射和CRUD界面还是可以放心的交给他去处理的。seam-gen产生出来的代码和你自己写的基本实现代码几乎是一样的,你很容易在此基础上进行改造。你也可以在一个sandbox项目下产生这些代码,然后把seam-gen产生的代码再复制到你的真实项目中进行修改。如果你不喜欢seam-gen产生的代码,你也可以修改他的模板。

写道
提示:seam-跟生成的java类和facelets 视图模板是从FreeMarker模板产生出来的,你可以在seam-gen文件夹下找到这些模板。如果想定制生成结果,你可以修改这些模板。

seam-gen能根据数据库schema定义出JPA 映射。有时候定义实体间的映射是个很繁琐的任务。有一次我不知道该怎么映射一个复杂的表关系,搞不清楚是用many-to-one还是one-to-many,也不知道该不该用一个复合主键。为了不再浪费时间,我让seam-gen对数据库做了反向工厂,然后研究他生成的代码。他确实帮我解脱了!所以如果你觉得在JPA或Hibernate手册中花了太长的时间来找解决办法,可以试试seam-gen,他能帮得上忙。

seam-gen提供的特性

      seam-gen可以从一个database schema上产生出一个CRUD程序来,也可以在几个entity 类上完成这个工作。当数据库中还没有表的时候,seam可以在程序启动的时候让Hibernate创建这些表。

      除了创建CRUD的程序原型外,seam-gen还搞了很多的配置和资源来帮你修改程序原型。先给你看看他的特性清单:

  • 静态资源、界面模板和page定义的增量式热部署;
  • JavaBean和Groovy组件(不包括实体类和EJB组件的)增量式热部署。
  • 准备好的Eclipse,NetBean和IntelliJIDEA项目文件
  • Facelets界面模板
  • RichFaces和ICEFaces UI组件
  • 为rich UI组件的look and feel改良的stylesheet
  • 可收藏的列表搜索和分页页面
  • RESTful实体界面,包括tab显示的父节点及子节点
  • 在实体类编辑界面提供相关实体查看的链接
  • 在UI中提供基于Ajax的即时实体模型验证
  • 基本的页面访问权限管理,在用户发起写操作前要求进行验证
  • 组件debug页面,对开发人员友善,对用户友好
  • 为目标数据库配置好的JCA数据源,JPA存储单元及JPA实体管理器(Hibernate 3.2是默认的JPA provider)
  • 通过classpath下的import.sql脚本初始化数据库数据

尽管seam-gen能直接生成一个可运行程序,也不用担心他会让你失业。他生成的程序再能,也总会有需要手工活进行调整的地方。他终究不过是个原型 。他缺乏必要的业务知识,所以认为所有entity千篇一律,没有办法进行正确的分类。尤其是当你有一个超大的schema要处理的时候,他的这个缺陷就更明显了。另外,他也无法在用户界面上正确显示Binary数据,因为他根本不知道这是个什么类型的文件。这些就是你要帮他解决的问题,也就是你的工作!

      seam-gen帮你做那些你绝不想做的琐碎工作,他把基础打好后把程序转交给你,让你根据需要进行调整。接下来咱就听Gavin King的劝,从seam-gen开始我们的seam之旅吧!

你可能感兴趣的:(数据结构,Hibernate,jpa,Richfaces,seam)