今天学习了使用Hibernate访问MySQL数据库的一些东西,从网上下载了刘长炯翻译的《MyEclipse Hibernate 快速入门 中文版》,看了一下,对Hibernate这个有了大体上的了解。
首先,我从我理解的角度说一下什么是hibernate,我以前是做.NET开发的,在做对于数据库操作的时候,总喜欢自己把对数据库的操作封装到一个类里面,然后在项目中进行调用,这样提高代码复用率,减少因为多次编写数据库操作语句造成的失误,而hibernate基本上就是相当于这个类库,把对数据库的操作封装起来,让我们自己调用,这样确实方便多了。
下面对我做的练习出错的地方做一个叙述,希望大家不要犯同样的错误。
前提:MySQL数据库建立tabel,名称为news
字段名称 类型 说明
Id int(自增) 编号
newsName varchar 名称
newsTitle varchar 标题
newsContent varchar 内容
上面是MySQL中表的定义。
然后使用Hibernate的工程反向功能生成表字段的映射(请查看那本快速入门)
然后也不需要自己再设置什么东西,
现在基本已经自动完成了,
1.写一个读数据的测试代码如下:
OK,测试通过。
2.写一个写数据的代码如下:
oh,NO,测试不通过,
输出错误代码如下:
傻了,这算是什么提示......无语,看看不对,改下输出,将:
修改为:
运行......这下错误提示多了:
粗略看了一下,好像是那个自增的编号的问题,我们查看一下字段映射XML文件:
到网上查了一下“assigned”:
更改它为“identity”,原因请参看:http://liu20011122.javaeye.com/blog/341838
这下运行可以了!
等等......又有新的问题出现,插入的数据在数据库中显示为乱码.....
有事要出去,明天继续写解决办法.....
恩,回来了,继续昨天的话题,
插入数据已经成功,但是除了ID可以正常显示,
所有的中文都是变成了问号....
首先检查是不是MySQL的问题,
在MySQL中建立一个查询,
手动输入一条insert语句,
然后执行......执行结果是一切正常,
中文可以插入,这就说明了MySQL是正常的,
也就是说MySQL接受程序传递过来的字符串内容已经是乱码了(中文部分),
所以我们基本可以判断是程序编码方面出现了问题,
到网上查询一下相关内容,
这一看不要紧,出这个问题的人还真不少,
当然也有老兄给出了解决办法,
修改一下hibernate.cfg.xml文件中的:
为:
加的这几句代码的意思也就是使用GBK编码集,
好了,编译运行,OK,这个世界清静了!