2007-03-15

数据持久化Hibernate的标准数据库连接池配置

以TOMCAT+MySql为例,Hibernate有两种连接数据库的方式:
1、Hibernate自行管理的数据库连接池
2、Hibernate使用当前容器配置的连接池
Hibernate+TOMCAT配置数据库连接池标准过程。
准备工作:
1、www.Hibernate.org下载最新的Hibernate,建议3.0
版。
2、安装了MYSQL,并且将MYSQL驱动复制到TOMCAT中的common\lib下。
3、在TOMCAT中建立一个新的WEB应用(这还不会的话就不要学
了)。
4、将Hibernate下的类库--LIB文件夹下的所有JAR复制到
WEB应用WEB-INF/lib下。
5、在WEB应用WEB-INF/classes目录下建立hibernate.cfg.xml文
件,内容如下:
<?xml version='1.0' encoding='GBK'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
实际上这一步建立的是个尚未有任何配置的XML文件。
一、Hibernate自行管理的数据库连接池
顾名思义,Hibernate框架包含了自己的管理数据库连接的方法,
这一切只需要配置hibernate.cfg.xml文件即可。
完整的hibernate.cfg.xml:
<?xml version='1.0' encoding='GBK'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<!--Hibernate self-manager connection pool-->
<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/nihongo?useUnicode=true</property>
<property name="connection.username">root</property>
<property name="connection.password">kevin</property>
<mapping resource="cat/Cat.hbm.xml"/>
</session-factory>
</hibernate-configuration>
以上各属性值请依照自己的情况修改即可。

二、Hibernate使用当前容器配置的连接池
容器(如TOMCAT)建立连接池,并配置JNDI,Hibernate通过调用JNDI来
使用容器的连接池。
这中方式稍微有点复杂,需要配置三个XML文件:
1、%TOMCAT_HOME%/conf/server.xml
在server.xml中,</host>这之前加入如下WEB应用上下文配置:
<Context path="/quickstart" docBase="quickstart" debug="0" >
<Resource name="jdbc/MySql5" auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/nihongo?useUnicode=true"
username="root" password="kevin" maxActive="100" maxIdle="10"
maxWait="-1"/></Context>
2、完整的hibernate.cfg.xml:
<?xml version='1.0' encoding='GBK'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<!--Hibernate use JNDI to access container's connection pool-->
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/MySql5</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="cat/Cat.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3、WEB应用的web.xml文件:
在web.xml的</web-app>之前加入如下配置:
<!--Hibernate use container's connection pool-->
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/MySql5</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
以上,2种配置Hibernate连接数据库的方式,具体差异本人尚不完全明确。
朋友们可自行编写测试代码测试。具体的Hibernate应用API等请直接查阅
其中文文档。

没有评论: