📄 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="architecture.html" title="第 2 章 体系结构"></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="architecture.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 2.1。Hibernate在大多数主流J2EE应用服务器 的受管理环境中都可以良好运作,甚至也可以在独立Java应用程序中运行。在本例中使用的示例数据库系统是PostgreSQL 7.3,当然也可以 很容易的支持其他数据库,只需要修改Hibernate SQL方言的配置。 </p><p> 第一步,我们必须拷贝所有需要的运行库到Tomcat去。在这篇教程中,我们使用一个单独的web程序(<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,Proxcool)。对于本教程来说,把<tt class="literal">pg73jdbc3.jar</tt>库文件(对应PostgreSQL 7.3和JDK 1.4)到全局类装载器路径去。如果你希望使用一个不同的数据库,拷贝相应的JDBC 驱动)。 </p></li><li><p> 不要拷贝任何其他东西到全局类装载器去。否则你可能在一些工具上遇到麻烦,比如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">hibernate2.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> dom4j (必需) </td><td> Hibernate在解析XML配置和XML映射元文件时需要使用dom4j。 </td></tr><tr><td> CGLIB (必需) </td><td> Hibernate在运行时使用这个代码生成库强化类(与Java反射机制联合使用)。 </td></tr><tr><td> Commons Collections, Commons Logging (必需) </td><td> Hibernat使用Apache Jakarta Commons项目提供的多个工具类库。 </td></tr><tr><td> ODMG4 (必需) </td><td> Hibernate提供了一个可选的ODMG兼容持久化管理界面。如果你需要映射集合,你就需要这个类库,就算你不是为了使用ODMG API。我们在这个教程中没有使用集合映射,但不管怎样把这个JAR拷贝过去总是不错的。 </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发行包中包含有一个示例的properties文件。所以,如果你想看看幕布之后到底发生了什么,也把log4j.jar拷贝到你的上下文类路径去吧(它位于<tt class="literal">src/</tt>目录中)。 </td></tr><tr><td> 其他文件是不是必需的? </td><td> 请察看Hibernate发行包中的/lib/README.txt文件。这是一个Hibernate发行包中附带的第三方类库的列表,总是保持更新。你可以在那里找到所有必需或者可选的类库的列表。 </td></tr></tbody></table></div><p> 我们现在来在Tomcat和Hibernate中配置共享的数据库连接池。也就是说Tomcat会提供经过池处理的JDBC连接(用它自己内置的DBCP连接池功能),Hibernate通过JNDI来请求这些连接。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>目录。要访问任何Servlet,在你的浏览器中访问<tt class="literal">http://localhost:8080/quickstart</tt>就可以了(当然,在后面加上在你的<tt class="literal">web.xml</tt>文件中列出的servlet的名字)。你现在可以创建一个只有空的<tt class="literal">process()</tt>方法的简单servlet了。 </p><p> Tomcat在这个配置下,使用DBCP连接池,通过JNDI位置:<tt class="literal">java:comp/env/jdbc/quickstart</tt>提供带有缓冲池的JDBC<tt class="literal">Connection</tt>s。如果你在让连接池工作的时候遇到困难,请查阅Tomcat文档。如果你得到了JDBC驱动的exception信息,请先不要用Hibernate,测试JDBC连接池本身是否正确。Tomcat和JDBC的教程可以在Web上查到。 </p><p> 下一步是配置hibernate,来使用绑定到JNDI的连接池中提供的连接。我们使用XML格式的Hibernate配置。当然,使用properties文件的方式在功能上也是一样的,也不提供什么特别好处。我们用XML配置的原因,是因为一般会更方便。XML配置文件放在上下文类路径(<tt class="literal">WEB-INF/classes</tt>)下面,称为<tt class="literal">hibernate.cfg.xml</tt>:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -