hibernate學習:hibernate.cfg.xml文件中與數據庫的兩種連接
(1)Hibernate自行管理連接池
?? 編寫Hibernate配置文件(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-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/HibernateTest?useUnicode=true&characterEncoding=GBK
???????? </property>
?
???????? <property name="connection.username">root</property>
???
???????? <property name="connection.password">root</property>
?
???????? <mapping resource="com/hibernate/User.hbm.xml"/>??????
?
???? </session-factory>
?
?</hibernate-configuration>
(2)使用外部服務器提供的數據庫連接池(以Tomcat為例)
???? 分為兩步:Tomcat會提供經過池處理的JDBC連接(用它內置的DBCP連接池),Hibernate通過JNDI方式來請求獲得JDBC連接。
???? a.Tomcat把連接池綁定到JNDI,我們要在Tomcat的主配置文件(TOMCAT/conf/server.xml)中加一個資源聲明:
??????? <Context path="/quickstart" docBase="quickstart" reloadable="true">
??????? <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>
??????????????? <!--HibernateTest 是mysql中的一個schema-->
??????????????? <value>jdbc:mysql://localhost:3306/HibernateTest?useUnicode=true&characterEncoding=GBK</value>?
??????????? </parameter>
??????????? <parameter>
??????????????? <name>driverClassName</name><value>com.mysql.jdbc.Driver</value>
??????????? </parameter>
??????????? <parameter>
??????????????? <name>username</name>
??????????????? <value>root</value>
??????????? </parameter>
??????????? <parameter>
??????????????? <name>password</name>
??????????????? <value>root</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>
?? 我們在這個例子中要配置的上下文叫做quickstart,它位于TOMCAT/webapp/quickstart目錄下。
?Tomcat現在通過JNDI的方式:java:comp/env/jdbc/quickstart來提供連接。
???? b.下一步就是配置Hibernate。首先Hibernate必須知道它如何獲得JDBC連接,在這里我們使用基于XML格式的Hibernate配置文件(hibernate.cfg.xml)。
??<?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.datasource">java:comp/env/jdbc/quickstart</property>
????????? <property name="show_sql">false</property>
????????? <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
??
????????? <!-- Mapping files -->
????????? <mapping resource="com/jason/User.hbm.xml"/>
??
????? </session-factory>
??
??</hibernate-configuration>
?配置好了,我們就可以編寫一個servlet來測試。
參考資料
? hibernate-3.0\doc\reference\zh-cn