技术开发 频道

hibernate自动生成xml,vo,dao

【IT168 技术文档】

  在做东西之前,感觉现在很多公司很多项目中都要对hibernate中的hbm.xml,vo,dao进行手工编写,也有很多项目中为了方便省去了dao,用hql直接编写。在此,感觉如果用hql操作的话,不利用调试(没有sql的一些工具可对数据库直接操作,如pl/sql等 )

  对于此三种文件,只是代码的一些参数的变化,逻辑操作基本相同,因此本人就想写一程序直接生成这三种文件,当我们程序员操作hibernate时,甚至不要求懂hibernate,只要求懂得一些接口,对vo如何操作。

  这样的话,可以把hibernate的使用错误率降低,可以减少程序员学习hibernate的时间,减少程序员写xml,vo,dao的时间,也有利于项目的稳定,让程序员有更多时间了解业务。

  当然这样的工具在很多公司都自主开发了,作为公司产品的一部分,也就不可能任何人都得到了。

  可能有人会说网上不是很多自动生成vo,xml等的东西吗?像MiddleGen,xdoclet等,但是它们虽然灵活,却不能生成一整套文件,像MiddleGen,我不知道如果有上千个表的话,它会不会死,反正我运行一次六七百个表进就死了,界面化的东西,而且要手工干预,感觉不是很好。

  因此本人还是决定写一写此程序,不管它的运用是否能成功,开始,本人用erwin生成的xml文件解析来操作分析,当然通过此xml文件完成是可以得到你要生成的三种文件的所有信息的,它不仅包括数据库中的物理结构,而且定义的逻辑结构也在此xml文件中,这样的话,就可以实现一些表名的中注释,定义表的字段的大小写也清晰分明,而且对文件操作可以与数据库相脱离,感觉是一个很好的选择。

  但当运用后发现,xml定义要很规范,(如果是对于专一用户来说是很容易实现),而且当今用数据建模的工具太多,就算用erwin建模也可能定义的很不一样。因此决定直接从数据库出发。

  相对erwin的xml文件,数据库的不足是没有逻辑结构,因此不可能有一些表的中方对应注释,而且表名和字段名都变大写,大小写很难与原意相同,如定义的字段为FisrtName,在数据库中都变为大写,就很难还原成此字符串,但好在此多数下不会影响操作。

  因此,本人定义的vo中,表名 为 ab_cd_ef 对应的vo就是AbCdEfVO,也就是首字大写有下划线的后一字母大写,最后加上大定的'VO'二字符。

  在hbm.xml文件中,本人只定义one-to-many,而其它many-to-one或one-to-one是在vo中找出此表对应外键的vo,个人感觉:虽然hibernate中有多种对应关系,但是作为从本条结果出生,就为两种,to-many和to-one。

  在vo中,本人引入了一个hashMap,nulllist主要是为了一些查询、更新、或删除时,用于字段设置为空时进行操作。

0
相关文章