分享
 
 
 

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

王朝other·作者佚名  2006-07-06
窄屏简体版  字體: |||超大  

/**

作者:Willpower

来源:Rifoo Technology(http://www.rifoo.com

时间:2006-07

备注:转载请保留以上声明

**/

本章开始做一个比较详细的应用程序,请大家跟我一起学习本书的内容。我们的范例名称叫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编写的开源数据库。大家可以去它的主页http://hsqldb.sourceforge.net/下载最新的程序。下载后解压到本地任何一个目录,本例的存放目录为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

[Copy to clipboard]

在命令行中手动输入以下命令来启动数据库:

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();

}

}

[Copy to clipboard]

在实际情况中,我们如果要连接不同的数据库,我们只需要更改以下内容:

• 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>

[Copy to clipboard]

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"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<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>

[Copy to clipboard]

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

注意:该文件需要放置在CLASSPATH中

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有