📄 quickstart.html
字号:
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>第 1 章 在Tomcat中快速上手</title><link rel="stylesheet" href="../shared/css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="HIBERNATE - 符合Java习惯的关系数据库持久化"><link rel="up" href="index.html" title="HIBERNATE - 符合Java习惯的关系数据库持久化"><link rel="previous" href="preface.html" title="前言"><link rel="next" href="tutorial.html" title="第 2 章 
 Hibernate入门
 "></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">第 1 章 在Tomcat中快速上手</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="preface.html">上一页</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="tutorial.html">下一页</a></td></tr></table><hr></div><div class="chapter" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a name="quickstart"></a>第 1 章 在Tomcat中快速上手</h2></div></div><div></div></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="quickstart-intro"></a>1.1. 开始Hibernate之旅</h2></div></div><div></div></div><p> 这份教程描述如何在Apache Tomcat servlet容器中为web应用程序配置Hibernate 3.0(我们使用Tomcat 4.1版本,与5.0版本差别很小)。Hibernate在大多数主流J2EE应用服务器 的运行环境中都可以工作良好,甚至也可以在独立Java应用程序中使用。在本教程中使用的示例数据库系统是PostgreSQL 7.4,只需要修改Hibernate SQL语言配置与连接属性,就可以 很容易的支持其他数据库了。 </p><p> 第一步,我们必须拷贝所有需要的库文件到Tomcat安装目录中。在这篇教程中,我们使用一个独立的web Context配置(<tt class="literal">webapps/quickstart</tt>)。我们确认全局库文件(<tt class="literal">TOMCAT/common/lib</tt>)和本web应用程序上下文的路径(对于jar来说是<tt class="literal">webapps/quickstart/WEB-INF/lib</tt>,对于class文件来说是<tt class="literal">webapps/quickstart/WEB-INF/classes</tt>)能够被类装载器检索到。我们把这两个类装载器级别分别称做全局类路径(global classpath)和上下文类路径(context classpath)。 </p><p> 现在,把这些库文件copy到两个类路径去: </p><div class="orderedlist"><ol type="1"><li><p> 把数据库需要的JDBC驱动文件拷贝到全局类路径,这是tomcat捆绑的DBCP连接池所需要的。Hibernate使用JDBC连接数据库方式执行SQL语句,所以你要么提供外部连接池中的连接给Hibernate,或者配置Hibernate自带的连接池(C3PO,Proxool)。对于本教程来说,把<tt class="literal">pg74jdbc3.jar</tt>库文件(支持PostgreSQL 7.4和JDK 1.4)到全局类装载路径下即可。如果你希望使用其他的数据库,拷贝其相应的JDBC 驱动文件)。 </p></li><li><p> 永远不要拷贝任何其他东西到Tomcat的全局类路径下,否则你可能在使用其他一些工具上遇到麻烦,比如log4j, commons-logging等等。 一定要让每个web应用程序使用自己的上下文类路径,就是说把你自己需要的类库拷贝到<tt class="literal">WEB-INF/lib</tt>下去,把配置文件configuration/property等配置文件拷贝到<tt class="literal">WEB-INF/classes</tt>下面去。这两个目录都是当前程序缺省的上下文类路径。 </p></li><li><p> Hibernate本身打包成一个JAR类库。将<tt class="literal">hibernate3.jar</tt>文件拷贝到程序的上下文类路径下,和你应用程序的其他库文件放一起。在运行时,Hibernate还需要一些第三方类库,它们在Hibernate发行包的<tt class="literal">lib/</tt>目录下。参见<a href="quickstart.html#3rdpartylibs" title="表 1.1. 
 Hibernate 第三方类库
 ">表 1.1 “ Hibernate 第三方类库 ”</a>。把所需要的第三方库文件也拷贝到上下文类路径下。 </p></li></ol></div><div class="table"><a name="3rdpartylibs"></a><p class="title"><b>表 1.1. Hibernate 第三方类库 </b></p><table summary="
 Hibernate 第三方类库
 " border="1"><colgroup><col><col></colgroup><thead><tr><th align="center"> 类库 </th><th align="center"> 描述 </th></tr></thead><tbody><tr><td> antlr (必需) </td><td> Hibernate使用ANTLR来产生查询分析器,这个类库在运行环境下时也是必需的。 </td></tr><tr><td> dom4j (必需) </td><td> Hibernate使用dom4j解析XML配置文件和XML映射元文件。 </td></tr><tr><td> CGLIB ,asm(必需) </td><td> Hibernate在运行时使用这个代码生成库增强类(与Java反射机制联合使用)。 </td></tr><tr><td> Commons Collections, Commons Logging (必需) </td><td> Hibernat使用Apache Jakarta Commons项目提供的多个工具类库。 </td></tr><tr><td> EHCache (必需) </td><td> Hibernate可以使用不同cache缓存工具作为二级缓存。EHCache是缺省的cache缓存工具。 </td></tr><tr><td> Log4j (可选) </td><td> Hibernate使用Commons Logging API,它也可以依次使用Log4j作为底层实施log的机制。如果上下文类目录中存在Log4j库,则Commons Logging使用Log4j和并它在上下文类路径中寻找的<tt class="literal">log4j.properties</tt>文件。你可以使用在Hibernate发行包中包含中的那个示例Log4j的配置文件。这样,把log4j.jar和它的配置文件(位于<tt class="literal">src/</tt>目录中)拷贝到你的上下文类路径下,就可以在后台看到底程序如何运行的。 </td></tr><tr><td> 其他文件是不是必需的? </td><td> 请察看Hibernate发行包中的 lib/README.txt文件,这是一个Hibernate发行包中附带的第三方类库的列表,他们总是保持最新的。你可以在那里找到所有必需或者可选的类库(注意:其中的"buildtime required"指的是编译Hibernate时所需要而非编译你自己的程序所必需的类库)。 </td></tr></tbody></table></div><p> 接下来我们来配置在Tomcat和Hibernate中共用的数据库连接池。也就是说Tomcat会提供经过池处理的JDBC连接(用它内置的DBCP连接池),Hibernate通过JNDI方式来请求获得JDBC连接。作为替代方案,你也可以让Hibernate自行管理连接池。Tomcat把连接池绑定到JNDI,我们要在Tomcat的主配置文件(<tt class="literal">TOMCAT/conf/server.xml</tt>)中加一个资源声明: </p><pre class="programlisting"><Context path="/quickstart" docBase="quickstart"> <Resource name="jdbc/quickstart" scope="Shareable" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/quickstart"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <!-- DBCP database connection settings --> <parameter> <name>url</name> <value>jdbc:postgresql://localhost/quickstart</value> </parameter> <parameter> <name>driverClassName</name><value>org.postgresql.Driver</value> </parameter> <parameter> <name>username</name> <value>quickstart</value> </parameter> <parameter> <name>password</name> <value>secret</value> </parameter> <!-- DBCP connection pooling options --> <parameter> <name>maxWait</name> <value>3000</value> </parameter> <parameter> <name>maxIdle</name> <value>100</value> </parameter> <parameter> <name>maxActive</name> <value>10</value> </parameter> </ResourceParams></Context></pre><p> 我们在这个例子中要配置的上下文叫做<tt class="literal">quickstart</tt>,它位于<tt class="literal">TOMCAT/webapp/quickstart</tt>目录下。如果要访问这个应用程序,在你的浏览器中输入<tt class="literal">http://localhost:8080/quickstart</tt>就可以了(当然,在后面加上在你的<tt class="literal">web.xml</tt>文件中配置好你的servlet)。你现在可以创建一个只含有空<tt class="literal">process()</tt>的简单servlet了。 </p><p> Tomcat现在通过JNDI的方式:<tt class="literal">java:comp/env/jdbc/quickstart</tt>来提供连接。如果你在配置连接池遇到问题,请查阅Tomcat文档。如果你遇到了JDBC驱动所报的exception出错信息,请在没有Hibernate的环境下,先测试JDBC连接池本身是否配置正确。Tomcat和JDBC的配置教程可以在Web上查到。 </p><p> 下一步就是配置Hibernate。首先Hibernate必须知道它如何获得JDBC连接,在这里我们使用基于XML格式的Hibernate配置文件。当然使用properties文件的进行配置,但缺少一些XML语法的特性。这个XML配置文件必须放在上下文类路径(<tt class="literal">WEB-INF/classes</tt>)下面,命名为<tt class="literal">hibernate.cfg.xml</tt>: </p><pre class="programlisting"><?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -