动态表单: beanUtil

动态表单: beanUtil


在apache.org有一个project:common-beanutil,非常好的一个操作javabean的工具类库.它可以拷贝-复制bean的属性,也可以生成dyna Bean.

在动态表单中,我需要从xml定义文件中生成table DDL和每个table对应的javabean.我能从html文件直接生成定义好的表单定义xml文件.然后利用这个xml文件生成ddl和dynabean.

我创建了一个Builder类,Builder类负责生成table ddl和dynaBean:

publilc interface Builder {

 public String buildCreatedDDL(String[] systemId) throws SQLException;

 public String buildDroppableDDL(String[] systemId) throws SQLException;

 public DynaBean buildDynaBean(String[] systemId) throws SQLException;

}

在Builder的实现中,我使用Xml pull parser来对xml文件进行解释.ddl和bean其实结构是一致的.我之所以需要bean,也就是与持久层对应起来,简化对数据库的操作.生成ddl其实只是一种实现方式,我也可以直接生成hbm.xml文件,然后通过hibernate来生成数据库模式.

beanUtil在生成dyanbean起了重要的作用,表的每个字段对应bean的一个属性dyna properties,dynaClass中可以存储这些属性,然后通过dynaClass.newInstance可以生成dynaBean:

List list = new ArrayList(); 

public void processStartElement() { //处理每一个element

  String name = xpp.getName();

  if ("text".equals(name))

    list.add(new DynaProperties(tableName,String.class));

}

我想,生成hbm.xml来创建数据库模式应该是一种更好的方式,这样有以下两大优点:

1)充分利用了hibernate强大的O/R mapping功能

2)省去了创建ddl时必需的table's field type的转化工作

当然Builder接口需要适当的改变.只是我现在还不知道,hibernate是否一定需要entity与hbm.xml对应?采用dyna entity能否与hibernate集成?这还需要继续探索.

posted on 2004-12-14 22:22  笨笨  阅读(2266)  评论(0编辑  收藏  举报

导航