官方版教程的问题
公司新同事比较多,为了让他们尽快熟悉Hibernate, 我打算做个系列教程. 于是边看官方教程边总结, 这样跟着做下来, 问题来了.
我看的是这个教程:
http://docs.jboss.org/hibernate/core/3.3/reference/en-US/html/tutorial.html#tutorial-firstapp 边看边发疑问: 有人成功跑过这个教程不? 我估计是没有. 因为该教程的maven配置有问题,而且文中漏了一些方法说明.如果你真的完完全全照着官方教程跑, 是跑不出来的.
而且, 该教程用maven来打包. 对做了多年J2EE 开发的人来说, Maven和Ivy自然不是什么问题. 但指望刚走出学校的小伙子去了解它们,无疑不切实际. 培训有所谓"台阶式"教育一说, 这个台阶, 定得太高了. 或者Hibernate的作者都长于技术, 而不太关注教程这些东西吧.
我的这个程序包其实没什么技术含量, 就是把官方教程的文件都做好, 配置好, 写好测试类, 用ant来编译. 指望新手熟悉maven不现实, 但做java的人, ant是必须掌握的.
下载地址:
http://www.uushare.com/user/diegoyun/file/2781837
如何运行
假设你已经配置好了ant,java
1> 解压,然后用 ant compile-src 来编译程序
2> 将工程导入到Eclipse
3> 在文件夹里有个database目录, cd 到这个目录, 然后双击 start_server.bat . 这样, hsqldb 就启动起来了.
4> 在Eclipse里打开 EventManager.java, 在main方法里, 改变cmd的值, 即可以测试hibernate的多个方法.
Good luck.
已解决的问题
这是我跑官网例子时遇到的错误, 一并记下, 希望可以帮助到你.
在Configuration().configure().buildSessionFactory() 时遇到:Content is not allowed in prolog. Nested exception: Content is not allowed in prolog. 导致这个错误的两个原因:
1>你的xml声明是utf-8字符集, 但实际上你用其他文本编辑器存xml的时候, 不是存成utf-8. 解决办法是把 <?xml version='1.0' encoding='utf-8'?> 改为 <?xml version='1.0'?>
2>你的hibernate.cfg.xml 路径不对. 很显然, hibernate的error信息误导了你. (不知道这算不算hibernate的一个bug)