Hibernate 学习的书-夏昕(2)

来源:互联网 发布:家里wifi网络拒绝接入 编辑:程序博客网 时间:2024/04/27 07:18

(配置实例)

 

 --- 配置和生成基础代码,也可以用eclipse的plugin完成。比如

http://sourceforge.net/projects/hibernator/

 

决定先照书上讲的例子边练边看。

1. 我下的版本是:

http://prdownloads.sourceforge.net/hibernate/

1)Hibernate3=>3.5.3-Final
2)hibernate-ext=>2.1.3
3)hibernate-middlegen=>hibernate plugin rel-5

4)Hibernate2=>2.1.8

 

2. 之前还下载过 apache-ant-1.8.1-bin.zip
http://ant.apache.org/bindownload.cgi, 解压后把

 

3.配置启动Middlegen工具。

1) 首先,将Middlegen-Hibernate软件包解压缩( 如解压缩到C:/Middlegen/ )。
2) 配置目标数据库参数
进入MiddleGen 目录下的/config/database 子目录,根据我们实际采用的数据库打开
对应的配置文件。如这里我们用的是mysql数据库,对应的就是mysql.xml文件。

<property name="database.url"
value="jdbc:mysql://localhost/sample"/>

 

<property name="database.userid"
value="user"/>

<property name="database.password"
value="mypass"/>

以上3项是我们进行配置的内容,分别是数据url以及数据库用
户名和密码。


3) 修改Build.xml
修改MiddleGen 根目录下的build.xml 文件,此文件是Middlegen-Hibernate 的Ant
构建配置。Middlegen-Hibernate将根据build.xml文件中的具体参数生成数据库表映射
文件。可配置的项目包括:
a) 目标数据库配置文件地址
查找关键字 ”!ENTITY”,得到:
<!DOCTYPE project [
<!ENTITY database SYSTEM
"file:./config/database/hsqldb.xml">
]>
默认情况下,MiddleGen 采用的是hsqldb.xml,将其修改为我们所用的数据
库配置文件(mysql.xml):
<!DOCTYPE project [
<!ENTITY database SYSTEM
"file:./config/database/mysql.xml">
]>
b) Application name
查找:
<property name="name" value="airline"/>
Hibernate Developer’s Guide Version 1.0
September 2, 2004 So many open source projects. Why not Open your Documents?
“aireline”是MiddleGen原始配置中默认的 Application Name,将其修改为我们
所希望的名称,如“HibernateSample”:
<property name="name" value="HibernateSample"/>
c) 输出目录
查找关键字“name="build.gen-src.dir"”,得到:
<property name="build.gen-src.dir"
value="${build.dir}/gen-src"/>
修改value="${build.dir}/gen-src"使其指向我们所期望的输出目录,
这里我们修改为:
<property name="build.gen-src.dir"
value="C:/Middlegen/sample"/>
d) 对应代码的Package name
查找关键字“destination”,得到:
<hibernate
destination="${build.gen-src.dir}"
package="${name}.hibernate"
genXDocletTags="false"
genIntergratedCompositeKeys="false"
javaTypeMapper=
"middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>
可以看到,hibernate 节点package 属性的默认设置实际上是由前面的
Application Name (${name})和“.hibernate”组合而成,根据我们的需要,
将其改为:
<hibernate
destination="${build.gen-src.dir}"
package="org.hibernate.sample"
genXDocletTags="true"
genIntergratedCompositeKeys="false"
javaTypeMapper=
"middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>
这里还有一个属性genXDocletTags,如果设置为true,则生成的代码将包含
xdoclet tag,这为以后在开发过程中借助xdoclet进行映射调整提供了帮助。关
于Hibernate的xdoclet使用,请参见“高级特性”中的相关内容。

 

至此为止,MiddleGen 已经配置完毕,在MiddleGen 根目录下运行ant

 

发现错误:

BUILD FAILED
C:/Middlegen/ build.xml:108: The JDBC driver you have
pecified by including one of the files in C:/Middlegen/
/config/database
      doesn't exist. You have to download this driver separately and put it in
:/Middlegen/ /lib/mysql-connector-java-3.0.0-beta-bin.j
r
      Please make sure you're using a version that is equal or superior to the
ne we looked for.
      If you name the driver jar file differently, please update the database.d
iver.file property
      in the C:/Middlegen/config/database/xxx.xml fil
 accordingly.

Total time: 1 second

 

解决方法

复制以前下载的 mysql-connector-java-5.1.12-bin.jar 到

C:/Middlegen/ lib 目录下。

修改/config/database/mysql.xml

<property name="database.driver.file"           value="${lib.dir}/mysql-connector-java-3.0.0-beta-bin.jar"/>

to

<property name="database.driver.file"           value="${lib.dir}/mysql-connector-java-5.1.12-bin.jar"/>

 

好了,启动Middlegen 界面成功。

 

4.修改Middlegen的选项

可以根据需求作数据库表和字段的配置选项,我没有改变默认设置,单击窗口顶部的Generate 按钮,MiddleGen 即为我们生成这些数据库表所对应的
Hibernate映射文件。在MiddleGen根目录下的C:/Middlegen/sample/org/hibernate/sample目录中,
我们可以看到对应的以.hbm.xml 作为后缀的多个映射文件,每个映射文件都对应了数
据库的一个表。

 

5. 根据这些文件生成对应的POJO

 

POJO 的生成工作可以通过Hibernate Extension 来完成,Hibernate Extension 的
hibernate-extensions-2.1.3tools/bin目录下包含三个工具:
1). hbm2java.bat
根据映射文件生成对应的POJO。通过MiddleGen 我们已经得到了映射文件,
下一步就是通过hbm2java.bat工具生成对应的POJO。
2). class2hbm.bat
根据POJO class 生成映射文件,这个工具很少用到,这里也就不再详细介绍。
3). ddl2hbm.bat
由数据库导出库表结构,并生成映射文件以及POJO。这个功能与MiddleGen
的功能重叠,但由于目前还不够成熟(实际上已经被废弃,不再维护),提供
的功能也有限,所以我们还是采用MiddleGen生成映射文件,之后由hbm2java
根据映射文件生成POJO 的方式。

 

  打开tools/bin/setenv.bat 文件,修改
其中的JDBC_DRIVER和HIBERNATE_HOME环境变量,使其指向我们的实际JDBC Driver
文件和Hibernate所在目录.

因为Hibernate3里/lib下边很多库文件都没有,所以, 又下了hibernate2.

 

“setenv.bat”

 

>>>>>>>>>>>

@echo off

rem -------------------------------------------------------------------
rem Setup environment for hibernate tools
rem -------------------------------------------------------------------

set JDBC_DRIVER=C:/webosService/Middlegen-Hibernate-r5/lib/mysql-connector-java-

5.1.12-bin.jar
set HIBERNATE_HOME=C:/webosService/hibernate-2.1/

set HIBERNATETOOLS_HOME=%~dp0..
echo HIBERNATETOOLS_HOME set to %HIBERNATETOOLS_HOME%

if "%HIBERNATE_HOME%" == "" goto noHIBERNATEHome

set CORELIB=%HIBERNATE_HOME%/lib
set LIB=%HIBERNATETOOLS_HOME%/lib
set CP=.;%CLASS_PATH%;%JDBC_DRIVER%;%HIBERNATE_HOME%/hibernate2.jar;%CORELIB%

/commons-logging-1.0.4.jar;%CORELIB%/commons-lang-1.0.1.jar;%CORELIB%/cglib-full-

2.0.2.jar;%CORELIB%/dom4j-1.4.jar;%CORELIB%/odmg-3.0.jar;%CORELIB%/xml-apis.jar;%

CORELIB%/xerces-2.4.0.jar;%CORELIB%/xalan-2.4.0.jar;%LIB%/jdom.jar;%CORELIB%

/commons-collections-2.1.1.jar;%LIB%/../hibernate-tools.jar

if not "%HIBERNATE_HOME%" == "" goto end

:noHIBERNATEHome
echo HIBERNATE_HOME is not set. Please set HIBERNATE_HOME.
goto end

:end

>>>>>>>>>>>

 

主意要把CLASS-PATH 里的

"Program Files" 改为 "PROGRA~1", 否则会把C:/"Program Files" 该做 “Files”

 

使用hbm2java,根据MiddleGen生成的映射文件生成Java 代码:
打开Command Window,在tools/bin目录下执行:
hbm2java c:/Middlegen/sample/org/hibernate/sample/*.xml --output=c:/Middlegen/sample/

即可生成对应的POJO, 就是说 。table1.hbm.xml 对应生成 table1.java

 

 

6. Hibernate 配置

配置文件名默认为“hibernate.cfg.xml”(或者hibernate.properties),配置文件应部署在CLASSPATH 中,对于Web 应用而言,配置文件应放置在在/WEB-INF/classes 目录下。

 

练习时注意要修改自己数据库的名字,用户名,密码。

原创粉丝点击