现在的位置: 首页 > 综合 > 正文

Hibernete基础教程读书笔记(3-1)

2013年12月03日 ⁄ 综合 ⁄ 共 4976字 ⁄ 字号 评论关闭

第3章              构建简单的应用程序

在本章中,你将学习构建并运行第1章中的示例所需的步骤。还要重新构建一个略微复杂的应用程序。本书中的所有代码都可以从Apress站点(www.apress.com)下载。

3.1        安装工具

31本书中使用的工具

工具

版本

下载位置

Hibernate

3.2.0

http://hibernate.org

Hibernate Tools

3.1

http://hibernate.org

Ant

1.6.5

http://ant.apache.org

HSQLDB

1.8.0.2

http://hsqldb.org

3.1.1  HibernateHibernate Tools

通过http://hibernate.org上左边的菜单链接Download可以找到Hibernate的最新版本。应该选择Hibernate core3.2.0版本或更高版本(默然说话:现在应该是3.3.x)

同样应该选择下载Hibernate Tools 3.1及以上版本。它为Ant构建工具和免费的Eclipse IDE提供了各种插件。在附录B中我们将讨论Eclipse特性。

3.1.2 HSQLDB 1.8.0

这个数据库是用Java编写的,而且是可以免费获得的开放源代码软件。我们的示例使用1.8.0.2版本,更高版本也适用。HSQL原来称为“Hypersonic”。在一些HSQL文档中可能会看到这个词,应该把它看作“HSQL”的同义词。Hibernate Query Language的缩写HQLHSQL太相似,所以为了避免混淆,我们将HSQL称为HSQLDB

如果你希望自己的数据库运行示例,那么应该处理以下方面的差异:

v  Hibernate方法类

v  JDBC驱动程序

v  数据库的连接URL

v  数据库的用户名

v  数据库的密码

在本章后面会介绍在哪里进行这些设置。你还会注意到,在指定数据库连接URL的地方,我们常会附加一个shutdown=true属性。这是为了纠正一个小问题:在Connection对象关闭前,HSQLDB并不将修改写到磁盘(当连接由Hibernate自己的连接池逻辑管理时,不会发生这种情况)。在非嵌入式数据库中,不需要这么做。

3.1.3 Ant 1.6.5

如果你不熟悉Ant,那么需要专门研究一下Ant这个主题。我们推荐Christopher M. JuddBrian Sam-Bodden撰写的《Enterprise Java Development on a Budget(Apress 2004),这本书对Ant等开放源码工具做了很好的介绍。

尽管对Ant的详细讨论超出了本书的范围,但是我们将讨论脚本使用的Hibernate任务。

代码清单31给出构建本章示例所用的Ant脚本-build.xml

<?xml version="1.0" encoding="UTF-8"?>

 

<project name="sample">

      <project file="build.properties" />

 

      <project name="src" location="src" />

      <project name="bin" location="bin" />

      <project name="sql" location="sql" />

      <project name="hibernate.tools" value="${hibernate.tools.home}${hibernate.tools.path}" location="src" />

      <path id="classpath.base">

           <pathelement location="${src}" />

           <pathelement location="${bin}" />

           <pathelement location="${hibernate.home}/hibernate3.jar" />

           <fileset dir="${hibernate.home}/lib" includes="**/*.jar" />

           <pathelement location="${hsql.home}/lib/hsqldb.jar" />

      </path>

 

      <path id="classpath.tools">

           <path refid="classpath.base" />

           <pathelement location="${hibernate.tools}/hibernate-tools.jar" />

      </path>

 

      <taskdef name="htools" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="classpath.tools" />

           <target name="exportDDL" depends="compile">

                 <htools destdir="${sql}" >

                      <classpath refid="classpath.tools" />

                      <configuration configurationfile="${src}/hibernate.cfg.xml" />

                      <hbm2ddl drop="true" outputfilename="sample.sql" />

                 </htools>

           </target>

 

           <target name="compile">

                 <javac srcdir="${src}" destdir="${bin}" classpathref="classpath.base" />

           </target>

 

           <target name="populateMessages" depends="compile">

                 <java classname="sample.PopulateMessages" classpathref="classpath.base" />

           </target>

 

           <target name="listMessages" depends="compile">

                 <java classname="sample.ListMessages" classpathref="classpath.base" />

           </target>

 

           <target name="createUsers" depends="compile">

                 <java classname="sample.CreateUser" classpathref="classpath.base" >

                      <arg value="dave" />

                      <arg value="dodgy" />

                 </java>

                 <java classname="sample.CreateUser" classpathref="classpath.base" >

                      <arg value="jeff" />

                      <arg value="jammy" />

                 </java>

           </target>

 

           <target name="createCategories" depends="compile">

                 <java classname="sample.CreateCategory" classpathref="classpath.base" >

                      <arg value="retro" />

                 </java>

                 <java classname="sample.CreateCategory" classpathref="classpath.base" >

                      <arg value="kitsch" />

                 </java>

           </target>

 

           <target name="postAdverts" depends="compile">

                 <java classname="sample.PostAdvert" classpathref="classpath.base" >

                      <arg value="dave" />

                      <arg value="retro" />

                      <arg value="Sinclair Spectrum for sale" />

                      <arg value="48k original box and packaging" />

                 </java>

                 <java classname="sample.PostAdvert" classpathref="classpath.base" >

                      <arg value="dave" />

                      <arg value="kitsch" />

                      <arg value="Commemorative Plates" />

                      <arg value="Kitten and puppies design" />

                 </java>

                 <java classname="sample.PostAdvert" classpathref="classpath.base" >

                      <arg value="jeff" />

                      <arg value="retro" />

                      <arg value="Atari 2600 wanted" />

                      <arg value="Must have original joysticks." />

                 </java>

                 <java classname="sample.PostAdvert" classpathref="classpath.base" >

                      <arg value="jeff" />

                      <arg value="kitsch" />

                      <arg value="Inflatable Sofa" />

                      <arg value="Leopard skin pattern. Nice." />

                 </java>

           </target>

 

           <target name="listAdverts" depends="compile">

抱歉!评论已关闭.