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中。配置举例如下:
- <? 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 > …
评论