博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate.cfg.xml配置详解
阅读量:2388 次
发布时间:2019-05-10

本文共 8934 字,大约阅读时间需要 29 分钟。

Hibernate的描述文件可以是一个properties属性文件,也可以是一个xml文件。下面讲一下Hibernate.cfg.xml的配置。配置格式如下:

1. 配置数据源

在Hibernate.cfg.xml中既可以配置JDBC,也可以配置JNDI。在本小节中讲述数据源如何配置,hibernate.cfg.xml

<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<
hibernate-configuration
>
<
session-factory
>
<!--
 各属性的配置
-->
<!
—为true表示将Hibernate发送给数据库的sql显示出来 --
>
<
property 
name
="show_sql"
>
true
</
property
>
<!--
 SQL方言,这边设定的是MySQL 
-->
<
property 
name
="dialect"
>
net.sf.hibernate.dialect.MySQLDialect
</
property
>
<!--
 一次读的数据库记录数 
-->
<
property 
name
="jdbc.fetch_size"
>
50
</
property
>
<!--
 设定对数据库进行批量删除 
-->
        
<
property 
name
="jdbc.batch_size"
>
30
</
property
>
<!
—下面为JNDI的配置 --
>
<!--
 数据源的名称 
-->
<
property 
name
="connection.datasource"
>
java:comp/env/jdbc/datasourcename
</
property
>
<!--
 Hibernate的连接加载类 
-->
<
property 
name
="connection.provider_class"
>
net.sf.hibernate.connection.DatasourceConnectionProvider
</
property
>
<
property 
name
="dialect"
>
net.sf.hibernate.dialect.SQLServerDialect
</
property
>
<!
—映射文件 --
>
<
mapping 
resource
="com/amigo/pojo/User.hbm.xml"
/>
<
mapping 
resource
="com/amigo/pojo/Org.hbm.xml"
/>
    
</
session-factory
>
</
hibernate-configuration
>


2. c3p0连接池

c3p0连接池是Hibernate推荐使用的连接池,若需要使用该连接池时,需要将c3p0的jar包加入到classpath中。c3p0连接池的配置示例如下:

<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<
hibernate-configuration
>
<
session-factory
>
        
<!--
 显示实际操作数据库时的SQL 
-->
        
<
property 
name
="show_sql"
>
true
</
property
>
        
<!--
 SQL方言,这边设定的是MySQL 
-->
        
<
property 
name
="dialect"
>
net.sf.hibernate.dialect.MySQLDialect
</
property
>
        
<!--
驱动程序,在后续的章节中将讲述mysql、sqlserver和Oracle数据库的配置 
-->
        
<
property 
name
="connection.driver_class"
>
……
</
property
>
        
<!--
 JDBC URL 
-->
        
<
property 
name
="connection.url"
>
……
</
property
>
        
<!--
 数据库用户名 
-->
        
<
property 
name
="connection.username"
>
user
</
property
>
        
<!--
 数据库密码 
-->
        
<
property 
name
="connection.password"
>
pass
</
property
>
        
<
property 
name
="c3p0.min_size"
>
5
</
property
>
        
<
property 
name
="c3p0.max_size"
>
20
</
property
>
        
<
property 
name
="c3p0.timeout"
>
1800
</
property
>
        
<
property 
name
="c3p0.max_statements"
>
50
</
property
>
        
<!--
 对象与数据库表格映像文件 
-->
       
<
mapping 
resource
="com/amigo/pojo/User.hbm.xml"
/>
<
mapping 
resource
="com/amigo/pojo/Org.hbm.xml"
/>
    
</
session-factory
>
</
hibernate-configuration
>
在上述配置中,Hibernate根据配置文件生成连接,再交给c3p0管理。


3. proxool连接池

  proxool跟c3p0以及dbcp不一样,它是自己生成连接的,因此连接信息放在proxool配置文件中。使用它时,需要将proxool-0.8.3.jar加入到classespath中。配置举例如下:
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<
hibernate-configuration
>
<
session-factory
>
        
<!--
 显示实际操作数据库时的SQL 
-->
        
<
property 
name
="show_sql"
>
true
</
property
>
        
<!--
 SQL方言,这边设定的是MySQL 
-->
        
<
property 
name
="dialect"
>
net.sf.hibernate.dialect.MySQLDialect
</
property
>
<!
—proxool的配置 --
>
       
<
property 
name
="proxool.pool_alias"
>
pool1
</
property
>
 
<
property 
name
="proxool.xml"
>
ProxoolConf.xml
</
property
>
 
<
property 
name
="connection.provider_class"
>
net.sf.hibernate.connection.ProxoolConnectionProvider
</
property
>
       
<!--
 对象与数据库表格映像文件 
-->
       
<
mapping 
resource
="com/amigo/pojo/User.hbm.xml"
/>
<
mapping 
resource
="com/amigo/pojo/Org.hbm.xml"
/>
  
</
session-factory
>
</
hibernate-configuration
>

在hibernate.cfg.xml的同目录下编写proxool的配置文件:ProxoolConf.xml,该文件的配置实例如下:

ProxoolConf.xml
<?
xml version="1.0" encoding="utf-8"
?>
 
<!--
 the proxool configuration can be embedded within your own application's. 
Anything outside the "proxool" tag is ignored. 
-->
 
<
something-else-entirely
>
 
<
proxool
>
 
<
alias
>
pool1
</
alias
>
 
<!--
proxool只能管理由自己产生的连接
-->
<!--
 驱动的url
-->
<!--
 jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=GBK
-->
<
driver-url
>
… 
</
driver-url
>
 
<!--
 驱动类,eg. com.mysql.jdbc.Driver
-->
<
driver-class
>
… 
</
driver-class
>
 
<
driver-properties
>
 
<!--
 数据库用户名,eg. value为root
-->
<
property 
name
="user"
 value
="…"
/>
 
<!--
 数据库密码,eg. value为root
-->
<
property 
name
="password"
 value
="…."
/>
 
</
driver-properties
>
 
<!--
 proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁
-->
 
<
house-keeping-sleep-time
>
90000
</
house-keeping-sleep-time
>
 
<!--
 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受
-->
 
<
maximum-new-connections
>
20
</
maximum-new-connections
>
 
<!--
 最少保持的空闲连接数
-->
 
<
prototype-count
>
5
</
prototype-count
>
 
<!--
 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定
-->
 
<
maximum-connection-count
>
100
</
maximum-connection-count
>
 
<!--
 最小连接数
-->
 
<
minimum-connection-count
>
10
</
minimum-connection-count
>
 
</
proxool
>
 
</
something-else-entirely
>

4. dbcp连接池

 在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp有 BUG,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。若需要使用dbcp,开发人员还需要将commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar两个jar包加入到classpath中。dbcp与c3p0一样,都是由hibernate建立连接的。

hibernate.cfg.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<
hibernate-configuration
>
<
session-factory
>
        
<!--
 显示实际操作数据库时的SQL 
-->
        
<
property 
name
="show_sql"
>
true
</
property
>
        
<!--
 SQL方言,这边设定的是MySQL 
-->
        
<
property 
name
="dialect"
>
net.sf.hibernate.dialect.MySQLDialect
</
property
>
        
<!--
驱动程序,在后续的章节中将讲述mysql、sqlserver和Oracle数据库的配置 
-->
        
<
property 
name
="connection.driver_class"
>
……
</
property
>
        
<!--
 JDBC URL 
-->
        
<
property 
name
="connection.url"
>
……
</
property
>
        
<!--
 数据库用户名,eg. root 
-->
        
<
property 
name
="connection.username"
>
</
property
>
        
<!--
 数据库密码, eg. root
-->
        
<
property 
name
="connection.password"
>
</
property
>
       
<
property 
name
="dbcp.maxActive"
>
100
</
property
>
 
<
property 
name
="dbcp.whenExhaustedAction"
>
1
</
property
>
<
property 
name
="dbcp.maxWait"
>
60000
</
property
>
 
<
property 
name
="dbcp.maxIdle"
>
10
</
property
>
 
<
property 
name
="dbcp.ps.maxActive"
>
100
</
property
>
 
<
property 
name
="dbcp.ps.whenExhaustedAction"
>
1
</
property
>
 
<
property 
name
="dbcp.ps.maxWait"
>
60000
</
property
>
 
<
property 
name
="dbcp.ps.maxIdle"
>
10
</
property
>
        
<!--
 对象与数据库表格映像文件 
-->
       
<
mapping 
resource
="com/amigo/pojo/User.hbm.xml"
/>
<
mapping 
resource
="com/amigo/pojo/Org.hbm.xml"
/>
    
</
session-factory
>
</
hibernate-configuration
>

5. MySql连接配置

在hibernate中,可以配置很多种数据库,例如MySql、Sql Server和Oracle,MySql的配置举例如下:

<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<
hibernate-configuration
>
<
session-factory
>
<!--
 各属性的配置
-->
<!
—为true表示将Hibernate发送给数据库的sql显示出来 --
>
<
property 
name
="show_sql"
>
true
</
property
>
<!--
 SQL方言,这边设定的是MySQL 
-->
<
property 
name
="dialect"
>
net.sf.hibernate.dialect.MySQLDialect
</
property
>
<!--
 一次读的数据库记录数 
-->
<
property 
name
="jdbc.fetch_size"
>
50
</
property
>
<!--
 设定对数据库进行批量删除 
-->
        
<
property 
name
="jdbc.batch_size"
>
30
</
property
>
<!--
驱动程序
-->
<
property 
name
="connection.driver_class"
>
com.mysql.jdbc.Driver
</
property
>
<!--
 JDBC URL 
-->
<
property 
name
="connection.url"
>
jdbc:mysql://localhost/dbname?characterEncoding=gb2312
</
property
>
<!--
 数据库用户名
-->
<
property 
name
="connection.username"
>
root
</
property
>
<!--
 数据库密码
-->
<
property 
name
="connection.password"
>
root
</
property
>
<!
—映射文件 --
>
<
mapping 
resource
="com/amigo/pojo/User.hbm.xml"
/>
<
mapping 
resource
="com/amigo/pojo/Org.hbm.xml"
/>
    
</
session-factory
>
</
hibernate-configuration
>

上面使用的驱动类是com.mysql.jdbc.Driver。需要将MySql的连接器jar包(eg. mysql-connector-java-5.0.4-bin.jar)加入到classpath中。

6. Sql Server连接配置

 本小节讲述一下Sql Server数据库的hibernate连接设置,在此只给出连接部分的内容,其余部分与2.2.1.5一样,在此不再赘述。内容如下:

<!--
驱动程序
-->
<
property 
name
="connection.driver_class"
>
net.sourceforge.jtds.jdbc.Driver
</
property
>
<!--
 JDBC URL 
-->
<
property 
name
="connection.url"
>
jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname
</
property
>
<!--
 数据库用户名
-->
<
property 
name
="connection.username"
>
sa
</
property
>
<!--
 数据库密码
-->
<
property 
name
="connection.password"
></
property
>
上例的驱动类使用的是jtds的驱动类,因此读者需要将jtds的jar包(eg. jtds-1.2.jar)加入到classpath中。

7. Oracle连接配置

本小节讲述一下Sql Server数据库的hibernate连接设置,在此只给出连接部分的内容,其余部分与2.2.1.5一样,在此不再赘述。内容如下:

<!--
驱动程序
-->
<
property 
name
="connection.driver_class"
>
oracle.jdbc.driver.OracleDriver
</
property
>
<!--
 JDBC URL 
-->
<
property 
name
="connection.url"
>
jdbc:oracle:thin:@localhost:1521:dbname
</
property
>
<!--
 数据库用户名
-->
<
property 
name
="connection.username"
>
test
</
property
>
<!--
 数据库密码
-->
<
property 
name
="connection.password"
>
test
</
property
>



上例使用的驱动类为:oracle.jdbc.driver.OracleDriver,开发人员需要将相关的jar包(ojdbc14.jar)加入到classpath中。

转载地址:http://estab.baihongyu.com/

你可能感兴趣的文章
树莓派(raspberry pi)播发flash 远程登录 视频播放
查看>>
Linux 安装与配置服务器版jre7
查看>>
Perform Two Phase Commits in MongoDB
查看>>
java.rmi.ConnectException: Connection refused to host: 127.0.0.1
查看>>
数据库服务器 Cloudscape
查看>>
JAVA中使用Schema校验XML
查看>>
使用Jakarta-ORO库的几个例子
查看>>
使用BlazeDS实现Java和Flex通信
查看>>
使用 Apache MINA 开发高性能网络应用程序
查看>>
五分钟学会使用spring-data-cassandra快速实现数据的访问
查看>>
Build self-healing distributed systems with Spring Cloud
查看>>
如何利用Spring Cloud构建起自我修复型分布式系统
查看>>
Java代码实现设置系统时间
查看>>
java -D参数简化加入多个jar
查看>>
用Erlang开发的文档数据库系统CouchDB
查看>>
Apache Commons工具集简介
查看>>
Apache Cayenne—辣椒你吃了吗?
查看>>
云应用开发工具:Spring Cloud 1.0 正式发布
查看>>
[转]在VC中使用智能指针操作Excel
查看>>
关于Linux命令行环境下无线网卡的配置
查看>>