摆弄Hibernate3.X
最近几天在摆弄Hibernate3.X,体会一下Hibernate3.X和2.X版本不同的地方。使用的是一些在2.X版本下可以正常运行的程序和配置文件。发现要从2.X升级到3.X还是需要解决蛮多问题的。
例如Hibernate2.X所使用的类似于hbm2java这样从映射文件生成java代码的工具已经从Hibernate Extensions包中移到了HibernateTools包里面,该包是作为eclipse发布的,所以如果要使用ant的话,就必须自己在那个包中找到hibernate-tools.jar,放入编译环境的classpath。具体的使用就看HibernateTools的指南吧。但是Hibernate3.0依然把SchemaExporter保留了,但是还是建议使用HibernateTools里面的工具,因为这些工具用统一的接口HibernateToolTask,感觉更好管理。
其次就是发现Hibernate3.3.1GA里面附带的依赖库不够完整,首先是只带了slf4j-api库而没有slf4j-simple或者slf4j-log4j12(选择前者可以使Hibernate用JDK1.4 logging,而后者则可以使用log4j),这在从hbm文件生成java代码的时候会遇到问题;然后还发现少了一个库:Apache的commons-logging,这个库是使用hbm文件导出schema到数据库和文件的时候所需要的……让人无奈的是,HibernateTools需要的是这两个库提供的log功能,为啥不能统一一下呢,这可不是对外接口哦….
顺便提醒一下教育网的同学们,由于使用HibernateTools的时候,在解析XML文件时会先校验XML格式,所以会链接http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd , 但是由于我们的网络环境比较封闭,可以直接在hibernate3.jar中获取到这个文件以及hibernate-configuration-3.0.dtd文件放到本地某个地方,之后将所有hbm.xml文件的DOCTYPE都指向那里,这样就不需要连接外网也能检验hbm.xml文件了。
而且在生成schema的过程中,发现HSQLDB会丢失生成的数据表(我使用的是HSQLDB-1.8),而MySQL没有这个问题。在网上找了一些相关的文章发现,这都是拜HSQLDB的缓存机制所赐的,如果放任hsqldb随jvm关闭,一定会丢失数据,我们在url上加入了特殊标记"shutdown=true",就能保证每次conn.close()都会关闭数据,将数据写入file.script,相对的也使缓存完全丧失了效果,例:"jdbc:hsqldb:file:${data.dir}/music;shutdown=true”。相关引用文献:http://hi.baidu.com/hxzon/blog/item/1c607dcb0eb88a1abf09e6ca.html
Hibernate3.X与Hibernate2.X不同的地方还是挺多的,例如在3.X里面就不能用session.find方法了,只能使用Query或Criteria接口进行数据查询。但是总体上大同小异,主要区别还是在于Hibernate3.X对旧版本的功能扩展,如加上自定义持久化实现机制等,从向后兼容性上来看,还可以。
washington mortgage broker 25616 daw software with no midi csf ocaso insurance services :-DDD blackjack expectations =-O captain ott and 2006 87332
phentermine in the philippines =-]]] online roulette system review :OO ultram nrops 8-DDD games free black jack 952211 lexapro dentist :DD gambling cruises tampa bay edgzfh