科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Pro Hibernate 3笔记和小结(7)之第三章创建简单应用

Pro Hibernate 3笔记和小结(7)之第三章创建简单应用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本章开始做一个比较详细的应用程序,请大家跟我一起学习本书的内容。我们的范例名称叫Message of the day,本章中,有时我们会简单称为Motd。它源于UNIX上的一个程序,可以在用户登录系统时发送当前的一些通知消息。

作者:willpower 来源:CSDN 2008年3月16日

关键字: 应用 创建 java

  • 评论
  • 分享微博
  • 分享邮件
本章开始做一个比较详细的应用程序,请大家跟我一起学习本书的内容。我们的范例名称叫Message of the day,本章中,有时我们会简单称为Motd。它源于UNIX上的一个程序,可以在用户登录系统时发送当前的一些通知消息。

安装工具

假设你已经安装了JDK1.3或以上版本,那么还需要Hibernate包和一个数据库的支持。当然,还可以装一个ANT构建工具。

Hibernate3

从官方网站下载最新的版本,解压到本地任何一个目录,本书的例子中的存放目录为C:\home\hibernate-3.0,解压后的文件包括Hibernate源文件以及jar包,还有Hibernate所需要的第三方类库lib。

HSQL 1.7.3.3

本例中的数据库采用HSQL,它是JAVA编写的开源数据库。大家可以去它的主页
下载最新的程序。下载后解压到本地任何一个目录,本例的存放目录为C:\home\hsqldb\。接着我们将使用一个名称叫Hibernate的数据库。首先创建一个包含Hibernate文件的目录,比如C:\home\hsqldb\hibernate\。然后,新建一个server.properties文件,将它放到该目录中。

Listing 3-1. Hibernate范例数据库的配置文件
CODE:

# Filename: C:\home\hsqldb\server.properties
#
# Hibernate examples database - create a
# database on the default port.
# Specifies the path to the database
# files – note that the trailing slash
# IS required.
server.database.0=file:/home/hsqldb/hibernate/
# Specifies the name of the database
server.dbname.0=hibernate


在命令行中手动输入以下命令来启动数据库:
java -classpath ..\lib\hsqldb.jar org.hsqldb.Server

关闭数据库可以直接关命令行窗口,但是如果想用另一种优雅的方式来关闭,我们需要编写简单的JAVA程序来完成(需要hsqldb.jar在CLASSPATH中能找到)

Listing 3-2. Simple Shutdown Logic for the HSQL Server
CODE:

    import java.sql.*;
    public class Shutdown {
        public static void main(String[] argv) throws Exception{
            Class.forName("org.hsqldb.jdbcDriver" );
            Connection c =DriverManager.getConnection(
                        "jdbc:hsqldb:hsql://localhost/hibernate",
                        "sa",
                        "");
            Statement s = c.createStatement();
            s.execute("SHUTDOWN");
            c.close();
        }
  }


在实际情况中,我们如果要连接不同的数据库,我们只需要更改以下内容:
• Hibernate的方言类(dialect)
• JDBC驱动
• 数据库连接URL
• 数据库用户名
• 数据库密码

这些将在后面章节中讲到。

Ant 1.6.2

ANT是可选安装的,当然我们推荐安装,因为它可以方便的构建一个JAVA应用。可以到ANT的主页http://ant.apache.org/上下载最新安装程序。我们假设你熟悉ANT,所以后面我们不解释build.xml文件的详细含义。本书的例子是用ANT1.6.2构建。
下面的清单提供了构建本范例的ANT脚本,注意:我们的ANT TASK中包含有一个名为schema的任务,它使用hibernate工具直接将mapping映射文件生成数据库schema,也就是自动创建数据库。

Listing 3-3.构建第三章范例的ANT脚本
CODE:

<project default="all">
    <property name="hibernate" location="/home/hibernate-3.0" />
    <property name="jdbc" location="/home/hsqldb/hsqldb.jar" />
    <property name="src" location="src" />
    <property name="config" location="." />
    <property name="dist" location="dist" />
    <property name="bin" location="${dist}/bin" />
    <property name="lib" location="${dist}/lib" />
    <property name="name" value="chapter03" />

    <path id="classpath.base">
        <pathelement location="." />
        <pathelement location="${bin}" />
        <pathelement location="${hibernate}/hibernate3.jar" />
        <fileset dir="${hibernate}/lib" includes="**/*.jar" />
        <pathelement location="${jdbc}" />
  </path>

  <target name="init">
        <mkdir dir="${dist}" />
        <mkdir dir="${bin}" />
        <mkdir dir="${lib}" />
  </target>

<target name="schema">
  <taskdef
      name="schemaexport"
      classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"
      classpathref="classpath.base" />

  <schemaexport
      properties="hibernate.properties"
      quiet="no"
      text="yes"
      drop="no"
      output="export.sql">
            <fileset dir="${src}">
                <include name="**/*.hbm.xml"/>
            </fileset>
    </schemaexport>

</target>

<target name="compile" depends="init">
    <javac srcdir="${src}" destdir="${bin}">
          <classpath refid="classpath.base" />
    </javac>
</target>

<target name="dist" depends="compile">
    <jar
        destfile="${lib}/${name}.jar"
        basedir="."
        includes="build.xml,src/**,cfg/**,bin/**"
        excludes=".classpath,.project,.cvsignore" />
</target>

<target name="clean">
    <delete dir="${dist}" />
    <delete dir="${bin}" />
    <delete file="${lib}/${name}.jar" />
</target>

<target name="all" depends="dist" />

</project>


Hibernate配置文件

Hibernate需要知道它所连接的数据库,以及一些相关的映射方式。

Listing 3-4. “Message of the day” 应用的映射文件
CODE:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
  PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
  "[url]http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd[/url]">

<hibernate-configuration>
  <session-factory>
      <property name="connection.driver_class">
          org.hsqldb.jdbcDriver
      </property>
      <property name="connection.url">
          jdbc:hsqldb:hsql://localhost/hibernate
      </property>
      <property name="connection.username">sa</property>
      <property name="connection.password"> </property>
      <property name="pool_size">5</property>
      <property name="show_sql">false</property>
      <property name="dialect">
        org.hibernate.dialect.HSQLDialect
      </property>

    <mapping resource=" Motd.hbm.xml"/>

  </session-factory>
</hibernate-configuration>


show_sql本例中设置为false,但是如果在调试时可以将它设置为true,很方便的可以看到后台打印的SQL语句。dialect属性也需要设置一下,最好不要设置为大多数数据库都可以接受的一种SQL子集GenericDialect,因为不是很方便扩展。Hibernate使用dialect类来决定可选的SQL语句用来创建和查询数据库。

注意:该文件需要放置在CLASSPATH中
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章