学习Hibernate的一些体会
学习Hibernate有一段时间了,但是一些心生余悸的担心还是会留在脑海中,
生怕有一天,她又开始耍脾气,不好好工作了。也不知道为什么,开源的东西,
有利就有弊.那些版本问题经常困扰着我.
一开始,接触Hibernate,总要从网上找些例子来熟悉一下基本的应用方法和
使用模式,先从csdn上面找,因为是专业的网站嘛,当然也最放心.于是找了两个:
地址如下:
1. http://blog.csdn.net/wujiang/archive/2005/03/01/306154.aspx
2. http://blog.csdn.net/toicecream/archive/2005/02/21/255949.aspx
类似以上两个的连接也是多不胜数啊.把他们down下来.开始step by step的做个
练习,看看Hibernate 是不是想传说中的那么好用,什么事情都是用了才知道好不好啊!!
先按照他们提供基本配置找相关软件,数据库,等必备配置产品.(就是由于这
一步没有做好啊!!).由于自己已经在用很多开源产品,对他们也还算熟悉,那些Tomcat
.mysql.ant等小软件,服务器等也搜集了不少,虽然版本稍又不同,但估计也不会差
到哪里吧.(我的tomcat是5.0.28.blog上要求的是5.0.9).因此,估计可以测试成功吧.
就没太在意.但是一切皆有可能啊.hehe. mysql 的配置也是一路惊险啊.
我以前自己用的图形界面是mysqlcc,但从网上消息得知,mysqlcc已经不被支持了,
因此也根据网上一些大哥们的知道,down了个administrator和query browser.
谁知道的是,什么事情都有可能不按预想的路线走..下过了,才知道那些软件还存在
些bugs.也不知道是我自己的问题,还是人家软件的问题.反正就是用户的信息和权限
不能正常保存,提示访问内存错误,(.dll问题).没办法.先凑合着用吧.
按照上面提供两个例子做好相应的文件.启动服务器....错误...
什么错误呢?不能打开连接(can't open connection).于是我就顺藤摸瓜,按照
错误提示的堆栈信息,一步步找信息.找到以后,还是不能解决问题啊.都不知道为什么
会打不开连接??初步推算,是数据库的设置的问题.可我的hibernate.cfg.xml配置的都对啊.
除了密码我改了一下以外,我别东西全部照抄.没想到还错.My God!!难道上帝连这点
权利都不给我.这个时候,我不能不回归自然,走到最初了.于是把数据库的访问密码删掉
(mysql和hibernate.cfg.xml同时修改).再测试.成功...
终于大功告成了.心里总算可以轻松了.(做程序有时候真累,但是把自己的时间和生命
花费在自己喜爱的事业中,值了.),可是知道现在我还是不明白.在我修改mysql的密码
的时候,我进入mysql管理时,系统必须让我输入密码,证明密码已经保存了.可时为什么
在其他地方却不能访问呢.虽然知道是不是mysql权限的问题.但还想不通是什么原因.
最后,把学习Hibernate的一些体会说一下,也算是自己做个总结,吸取个教训吧:
1.如果是手工编写代码.(而不是使用jbuilder等一些IDE)那么你必须保证
hibernate.cfg.xml放在字节码文件(.class)的包最高层次,比如,你有一个文件
(org.cheng.Test.class)放到了classes目录下面,那么你的hibernate.cfg.xml也必须
放到classes目录下面.
2.你的对象影射文件(如:Customer.hbm.xml)必须与目标文件(编译好的.class文件)
放在同一目录.即Customer.class 与Customer.hbm.xml放在同一目录.
3.保证你的数据库本身没有问题.这也是关键啊.
以上三点是保证你的Hibernate应用可以正常运行的基础,如果有什么问题,希望好好
检查以上三点的配置情况,也许会找到答案.
另外.在测试Hibernate期间,也弄到了ant的一个问题,希望能和大家分享一下,
以免遇到同样的问题,又要找资料了.
当我用ant去编译build.xml文件时,出现如下提示错误:
"Invalid implementation version between Ant core and Ant optional tasks.
core : 1.6.3
optional: 1.5.3"
都不知道什么原因,于是网上拼命搜资料.最后才知道有很多原因可能导致这个问题:
1.其他软件产品(JBuilder.Weblogic.Eclipse.J2EESDK等)所附带的ant的版本与
你自己安装的版本存在冲突,由于类的版本有冲突,问题当然会有了.
2.你自己安装的ant中存在一些*optional.jar文件存在版本冲突.
不管什么原因,只要能解决就好了,我看了网上很多资料,大都没有太好的解决方法.
有的让你重装,有的让你改动其他产品中的ant软件,即覆盖.
还有一种比较适合我,不知道对你有没有用处?就是将存放ant的库的那个目录
加入到CLASSPATH的前端,这样当ant使用运行的时候,就可以找到最新的版本,而在后面如果
发现旧版本,也不会覆盖这个版本,从而保证你的ant可以正常运行,对其他软件的影响也最小.
如果不是这样,当ant运行的时候,她可能先发现旧版本,当在类路径发现新的版本时,就会将一些
文件进行覆盖.所以会导致一些错误.
好了,最后也祝你学习愉快,进步快啊.