Hibernate.cfg.xml的配置

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连接池的配置示例如下:

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 >  

<!--  显示实际操作数据库时的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中。配置举例如下:

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 >  

<!--  显示实际操作数据库时的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建立连接的。

在hibernate2.0中的配置建立如下:

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的配置举例如下:

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 >  

<!-- 驱动程序 -->  

< 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中。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值