7.C3P0

来源:互联网 发布:手机淘宝首页大图尺寸 编辑:程序博客网 时间:2024/06/05 04:20
1.为什么一定要使用C3P0:
     C3P0: 一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有hibernate,spring等。
     默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池。但这个连接池性能不佳,因此官方也只是建议仅在开发环境下使用。Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool。
     这里说一下为什么一定要使用C3P0吧:
1)hibernate官网推荐
2 ) 解决数据库重启后tomcat在不需要重启的情况下即可重新获得数据连接的问题。

2. 在Hibernate中配置数据源:
     1.导入相关的jia包:在 LibrarySupport\hibernate-release-4.2.4.Final\lib\optional\c3p0路径下:
c3p0-0.9.2.1.jar;
hibernate-c3p0-4.2.4.Final.jar;
mchange-commons-java-0.2.3.4.jar

     2.在主配置文件hibernate.cfg.xml中配置
<!-- 配置C3P0 -->
<!--最少连接数-->
     <property name="hibernate.c3p0.min_size">4</property>
<!--最大连接数-->
     <property name="hibernate.c3p0.max_size">10</property>
<!--最多维护多少个对象-->
     <property name="hibernate.c3p0.max_statements">100</property>
<!--最少维护多少个对象-->
     <property name="hibernate.c3p0.acquire_increment">5</property>
<!--session的失效时间-->
     <property name="hibernate.c3p0.timeout">3600</property>
<!--守护进城多长时间进行检查一次connection对象是否失效-->
     <property name="hibernate.c3p0.idle_test_period">36000</property>

     3.测试:
//测试C3P0
@Test
 public void testC3P0(){
     //① 加载配置
    Configuration cfg = new Configuration();
    cfg.configure() ; //从classpath 类路径下加载默认配置文件:hibernate.cfg.xml

     //② 创建SessionFactory
    ServiceRegistryBuilder srb = new ServiceRegistryBuilder();
    srb.applySettings(cfg.getProperties());
    ServiceRegistry serviceRegistry = srb.buildServiceRegistry() ;

    SessionFactory sessionFactory = cfg.buildSessionFactory(serviceRegistry) ;
    System. out.println(sessionFactory);

     //③ 创建Session对象
    Session session = sessionFactory.openSession();
    session.doWork( new Work(){

          @Override
          public void execute(Connection connection) throws SQLException {
              System. out.println(connection);
         }
    });
    session.close();
}         


0 0
原创粉丝点击