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 目录下。
练习时注意要修改自己数据库的名字,用户名,密码。
- Hibernate 学习的书-夏昕(2)
- Hibernate学习(2)------ Hibernate的配置文件
- Hibernate 学习的书-夏昕(1)
- Hibernate 学习的书-夏昕(3)
- Hibernate的学习笔记(2)
- Hibernate学习(2)
- hibernate 学习(2)
- Hibernate的学习(概念)
- Hibernate入门学习(2)----Hibernate Tools的安装及环境的搭建
- Hibernate学习笔记(2)
- Hibernate 学习笔记(2)
- Hibernate学习笔记(2)
- Hibernate学习总结(2)
- Hibernate学习笔记(2)
- Hibernate学习(2)---JDBC
- Hibernate 学习笔记-1-2(测试Hibernate中session的生命周期以及CRUD)
- Hibernate 学习笔记-2-1(Hibernate的多对一关联)
- Hibernate学习笔记(2)------------Hibernate数据对象的三种状态
- 文科和理科的区别(What is the difference between science and engineering)?
- Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(四)
- was7.0 下面的错误WTRN0063E: An illegal attempt to commit a one phase capable resource with existing two phase
- pku1811 pku2429 (大素数判断,整数分解)
- Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(五)
- Hibernate 学习的书-夏昕(2)
- 转:MultiByteToWideChar和WideCharToMultiByte用法详解
- Java中Native关键字的作用(转)
- 用Google App Engine做个人代理服务器
- How To Use An Embedded Resource From A Sub-Folder
- Oracle 中时间的计算
- 学习JPA——Hibernate Annotation使用实例
- .....
- Maven2快速认识和使用