08-09
23
Hibernate学习笔记
作者:Java伴侣 日期:2008-09-23
前段时间,学习了一下Hibernate,在这里推荐一本很容易上手的书<<夏昕.深入浅出Hibernate>>,这本书虽然我只看了前两章,但至少,一开始,我是根据这两章的介绍开始入手的.
一.学习之前的准备
1.安装ant
ant我老早前就装过了,好像也不难,网上资料也特别多.关键是最后环境变量的设置,设个ANT_HOME=ANT的安装目录,我的机器填的是"d:\ant1.6.1",再把"d:\ant1.6.1\bin"加到path里.
2.下载hibernate
到官方网站去下载.
3.下载Middlegen-Hibernate-r5
也到官方网站上去下载
4.下载hibernate-extensions
个人感觉要不要这个无所谓,因为我在后来的使用过程中遇到了很多问题,发现Middlegen-Hibernate-r5也可以实现htm2java这个功能.
5.建个简单的数据库及表
二.开始使用Middlegen-Hibernate-r5
1.配置数据库
确定你用的是什么数据库,我用的mysql,所以首先要去更改数据库配置,在Middlegen-Hibernate-r5安装目录下,有config/database目录,里面放了许多类型数据库的xml文件,我找到mysql.xml,然后用记事本或者其他编辑器打开.有些值你可以不去理会,但以下四项必须要重新填:
database.driver.file,这个是指向mysql驱动的地方,有两种方法修改.一个是不修改路径,只修改mysql驱动包的文件名,然后把驱动拷贝到Middlegen-Hibernate-r5/lib下面.还有就是直接修改路径和包名,用绝对路径也无所谓.我采用了第一种方法,最后这一行被我改成<property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.0.0-beta-bin.jar"/>
database.url,这个是写明要连接的数据库.我填的是 <property name="database.url" value="jdbc:mysql://localhost/hibernate"/>hibernate是我建的数据库名.
database.userid,database.password,这两项自然是写明登录数据库的用户名和密码了.
2.修改build.xml文件
指定数据库配置文件
<!DOCTYPE project [
<!ENTITY database SYSTEM "file:./config/database/mysql.xml">
]>
原来是hsqldb.xml,因为我用的是mysql,而且上一步骤也介绍了如何修改xml文件,所以改成mysql.xml
修改Application Name
<property name="name" value="HibernateSample"/>,原来是aireline,这个是Middlegen-Hibernate-r5默认的.
输出目录
<property name="build.gen-src.dir" value="${basedir}/temp"/>,在这里设置,最终生成的文件放在哪个目录里,我在Middlegen-Hibernate-r5下建了个temp,所以这样设置.
对应代码的Package Name
<hibernate
destination="${build.gen-src.dir}"
package="org.redsaga.quickstart"
genXDocletTags="true"
genIntergratedCompositeKeys="false"
javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>这里设置Package Name的名字,因为我上一步中设置了输入文件的位置.像我这样设置后,生成的文件将会放在Middlegen-Hibernate-r5/temp/org/redsaga.quickstart,并且在之后操作中生成的xml及java文件的包名都会是这里设置的.
三.根据数据库表结构生成xml文件
1.运行Middlegen-Hibernate图形界面
前提是你必须已成功配置ant环境,进入Middlegen-Hibernate目录,按我的情况是进入DOS命令界面,
cd d:\Middlegen-Hibernate
ant (默认会运行build.xml),然后图形界面就出来了,重叠显示数据库内所有的表,如果有特别要求的,可以设置相关参数,我没管,就直接点击菜单"Generator"(好像只有这么一个菜单项,没怎么注意),然后就看到在Middlegen-Hibernate-r5/temp/org/redsaga.quickstart目录里放着生成的xml文件.
四.根据生成的xml文件生成java文件
进入DOS命令界面
cd d:\Middlegen-Hibernate
ant hbm2java,会将刚才生成的xml文件继续生成java文件.
三.遇到的问题及解决方法
今天想用Hibernate,然后自动生成数据库的映射文件,结果碰到了好多问题.
1.到了执行hbm2java命令,首先是报找不到类的错误,我看了一下build.xml里所指向的包路径,应该是好的啊,找了半天,才发现在D:\hibernate-extensions-2.1\tools\bin目录下有个setenv.bat是专门用来设置包路径的,并且在hbm2java执行之前会Call这个批处理文件,所以按照hibernate安装目录下的lib目录里的文件名的实际情况,修改这个setenv.bat文件.好,终于不报找不到类的错误.
2.又报content is not allowed in prolog的错误,在google里面搜索,发现是因为用UltraEdit的原因.说是在用UltraEdit 编写hibernate的映射文件时,发现UltraEdit会自动向UTF8编码的文件的最开头,加入一个特殊字符。这在UltraEdit中是看不到的,在别的编辑器中可以看到。当使用dom4j解析文件时,出现content is not allowed in prolog错误。虽然有人说用dom4j版本1.6以上的版本就没问题,但我的dom4j确实是1.6版本以后,但依然出问题.有人说UltraEdit11.0以上版本可以另存为"UTF8 - NO BOM",我就把我的UltraEdit升级到11.10a+,把所有XML文件(包括用Middlegen-Hibernate-r5生成的xml文件)都用UltraEdit另存为UTF8 - NO BOM格式的.好,这个问题解决了.
3.不是说到这儿就顺利完成了,又报了个空指针的错误,这可让我愁坏,只好又在baidu里搜索,发现有个人也遇到这样的错误,说是在build.xml文件target里加个配置文件,重新建一下这个配置文件就好了,但是我这样做了还是不对,最后发现是自己没有把配置文件写对,真是好事多磨啊.现在把解决方法详细说明一下.在Middlegen-Hibernate-r5下的build.xml里修改关于hbm2java的target项,加个config项.
<hbm2java output="${build.gen-src.dir}" classpathref="classpath.path" config="config.xml" >,然后再Middlegen-Hibernate-r5目录下(也就是跟build.xml同目录)建个config.xml文件,文件内容如下:<?xml version="1.0"?>
<codegen>
<generate renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer">
<param name="generate-concrete-empty-classes">false</param>
</generate>
</codegen>
最后,进入Dos命令行方式,进入Middlegen-Hibernate-r5目录,敲入ant hbm2java,终于执行通过,并且在指定目录下建了个java文件.
一.学习之前的准备
1.安装ant
ant我老早前就装过了,好像也不难,网上资料也特别多.关键是最后环境变量的设置,设个ANT_HOME=ANT的安装目录,我的机器填的是"d:\ant1.6.1",再把"d:\ant1.6.1\bin"加到path里.
2.下载hibernate
到官方网站去下载.
3.下载Middlegen-Hibernate-r5
也到官方网站上去下载
4.下载hibernate-extensions
个人感觉要不要这个无所谓,因为我在后来的使用过程中遇到了很多问题,发现Middlegen-Hibernate-r5也可以实现htm2java这个功能.
5.建个简单的数据库及表
二.开始使用Middlegen-Hibernate-r5
1.配置数据库
确定你用的是什么数据库,我用的mysql,所以首先要去更改数据库配置,在Middlegen-Hibernate-r5安装目录下,有config/database目录,里面放了许多类型数据库的xml文件,我找到mysql.xml,然后用记事本或者其他编辑器打开.有些值你可以不去理会,但以下四项必须要重新填:
database.driver.file,这个是指向mysql驱动的地方,有两种方法修改.一个是不修改路径,只修改mysql驱动包的文件名,然后把驱动拷贝到Middlegen-Hibernate-r5/lib下面.还有就是直接修改路径和包名,用绝对路径也无所谓.我采用了第一种方法,最后这一行被我改成<property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.0.0-beta-bin.jar"/>
database.url,这个是写明要连接的数据库.我填的是 <property name="database.url" value="jdbc:mysql://localhost/hibernate"/>hibernate是我建的数据库名.
database.userid,database.password,这两项自然是写明登录数据库的用户名和密码了.
2.修改build.xml文件
指定数据库配置文件
<!DOCTYPE project [
<!ENTITY database SYSTEM "file:./config/database/mysql.xml">
]>
原来是hsqldb.xml,因为我用的是mysql,而且上一步骤也介绍了如何修改xml文件,所以改成mysql.xml
修改Application Name
<property name="name" value="HibernateSample"/>,原来是aireline,这个是Middlegen-Hibernate-r5默认的.
输出目录
<property name="build.gen-src.dir" value="${basedir}/temp"/>,在这里设置,最终生成的文件放在哪个目录里,我在Middlegen-Hibernate-r5下建了个temp,所以这样设置.
对应代码的Package Name
<hibernate
destination="${build.gen-src.dir}"
package="org.redsaga.quickstart"
genXDocletTags="true"
genIntergratedCompositeKeys="false"
javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>这里设置Package Name的名字,因为我上一步中设置了输入文件的位置.像我这样设置后,生成的文件将会放在Middlegen-Hibernate-r5/temp/org/redsaga.quickstart,并且在之后操作中生成的xml及java文件的包名都会是这里设置的.
三.根据数据库表结构生成xml文件
1.运行Middlegen-Hibernate图形界面
前提是你必须已成功配置ant环境,进入Middlegen-Hibernate目录,按我的情况是进入DOS命令界面,
cd d:\Middlegen-Hibernate
ant (默认会运行build.xml),然后图形界面就出来了,重叠显示数据库内所有的表,如果有特别要求的,可以设置相关参数,我没管,就直接点击菜单"Generator"(好像只有这么一个菜单项,没怎么注意),然后就看到在Middlegen-Hibernate-r5/temp/org/redsaga.quickstart目录里放着生成的xml文件.
四.根据生成的xml文件生成java文件
进入DOS命令界面
cd d:\Middlegen-Hibernate
ant hbm2java,会将刚才生成的xml文件继续生成java文件.
三.遇到的问题及解决方法
今天想用Hibernate,然后自动生成数据库的映射文件,结果碰到了好多问题.
1.到了执行hbm2java命令,首先是报找不到类的错误,我看了一下build.xml里所指向的包路径,应该是好的啊,找了半天,才发现在D:\hibernate-extensions-2.1\tools\bin目录下有个setenv.bat是专门用来设置包路径的,并且在hbm2java执行之前会Call这个批处理文件,所以按照hibernate安装目录下的lib目录里的文件名的实际情况,修改这个setenv.bat文件.好,终于不报找不到类的错误.
2.又报content is not allowed in prolog的错误,在google里面搜索,发现是因为用UltraEdit的原因.说是在用UltraEdit 编写hibernate的映射文件时,发现UltraEdit会自动向UTF8编码的文件的最开头,加入一个特殊字符。这在UltraEdit中是看不到的,在别的编辑器中可以看到。当使用dom4j解析文件时,出现content is not allowed in prolog错误。虽然有人说用dom4j版本1.6以上的版本就没问题,但我的dom4j确实是1.6版本以后,但依然出问题.有人说UltraEdit11.0以上版本可以另存为"UTF8 - NO BOM",我就把我的UltraEdit升级到11.10a+,把所有XML文件(包括用Middlegen-Hibernate-r5生成的xml文件)都用UltraEdit另存为UTF8 - NO BOM格式的.好,这个问题解决了.
3.不是说到这儿就顺利完成了,又报了个空指针的错误,这可让我愁坏,只好又在baidu里搜索,发现有个人也遇到这样的错误,说是在build.xml文件target里加个配置文件,重新建一下这个配置文件就好了,但是我这样做了还是不对,最后发现是自己没有把配置文件写对,真是好事多磨啊.现在把解决方法详细说明一下.在Middlegen-Hibernate-r5下的build.xml里修改关于hbm2java的target项,加个config项.
<hbm2java output="${build.gen-src.dir}" classpathref="classpath.path" config="config.xml" >,然后再Middlegen-Hibernate-r5目录下(也就是跟build.xml同目录)建个config.xml文件,文件内容如下:<?xml version="1.0"?>
<codegen>
<generate renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer">
<param name="generate-concrete-empty-classes">false</param>
</generate>
</codegen>
最后,进入Dos命令行方式,进入Middlegen-Hibernate-r5目录,敲入ant hbm2java,终于执行通过,并且在指定目录下建了个java文件.
评论: 0 | 引用: 0 | 查看次数: 695
发表评论