把Hibernate的HBM文件转成OpenJPA的ORM.XML

正题了.关于框架级的区别啊,API级改动都可以参考下面

http://www.ibm.com/developerworks/cn/websphere/techjournal/0708_vines/0708_vines.html

不过IBM的人都比较High Level那.里面有段

由于对象关系映射已存在,所以您需要使用中间相遇迁移方法保持现有对象和数据模型。不能使用自底向上方法从数据模型生成对象模型,也不能使用自顶向下方法从对象模型生成数据模型;迁移必须保持两个模型。本文手动实现了中间相遇映射,但是 Dali JPA 工具或 IBM Design Pattern 工具包(请参见参考资料)可以自动进行 Hibernate XML 到 OpenJPA XML的大部分迁移

因为我们有几百个HBM要转换,当然希望能做这点,于是发了信问,没回音,没办法,网上没有找比较好工具,只能自己动手丰衣足食那.

本软件主要把已有的Hibernate的HBM转换ORM.XML.小知识,JPA不只是支持注解,同样也支持XML配置.

如果大家看明白那位IBM大师的大作后.就知道其实里面最让人头痛的一个部分莫过于HBM转ORM.XML配置的过程.


我放在附件里了,点击下下来,
如果想要下带JAR包的源代码可看
http://zlhades.spaces.live.com/blog/cns!7B67908E972A4581!2634.entry
下载后运行JPAConverter.记得READ_FOLDER,WRITE_FOLDER的配置,再把文件名

fieldNameList.add("CommodityAttributeActual.hbm");

这样一个文件 一个文件的加进去,这是一个草稿那,因为公司不用,就少了点完善的激情,我想会用JPA的人都应该看得明白.源代码随便改那.配置好RUN就可以,生成的XML会打在控制台里,我的例子里会有点小错误,主要是以前用公司的代码,传来的时候我删除了,可以试一下看生成的东西是不是你想要的.

思路很简单,本工具用的是Digestert先读XML建造我定义好的模型,当然,可能因为HBM过于复杂,大量高级Hibernate应用.不好做转化,这时我把由Digester造出来的对像再reInitial一下,这样出来的模型就是相当好的,再用XStream写成相应的XML.大功造成.

里面比较难的地方有:

1.Hibernate的继承转到JPA里面去,里面对于没有实体表对像的东西 可以通来MappedSuperclass来配置,

2.自定义类型JPA里不支持.但是可以用植入类解决,你可以在相关自定义类形中加入专门针对JPA存储的字段,而且通过GET/SET来与JPA交互,这时,GET,SET方法中你想做什么都可,里面可以初始化你用的真正数据,基本和自定义类型接近吧:)

3.Hibernate中resultset用ql-result-set-mapping再建立相应的垃圾表解决吧.这个我确是没有相到好办法.

4.记得上OPENJPA那里下最新的OPENJPA版本,2008年11份才出来的,对JPA2.0支持.很新鲜的对Criteria的支持,可以帮你省下很多事,当然你也可以写个山寨版的hibernate criteria.这样基本的代码都可以不改了:)方法是看玩Hibernate Criteria源代码后再写一套,我们用ibatis写过一套,我想JPQL写起来会容易很多.

5.持久化API,我们项目这点还是做得不差,对HIBERNATE的API做个封装,改我们的封装类就可以,当然也可做山寨的:)很简单.

当然,这里面有很多地方要改的,很地方都是与我的项目相当的,有得来忘记改了:)用的人可以下来自已改,决对全开源:)哈哈.有相关的东西也可留言给我:)交流一下:)

你可能感兴趣的:(Hibernate,xml,ibatis,jpa,IBM)