`
xgbjmxn
  • 浏览: 269385 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

简述Hibernate配置连接池

阅读更多
    *
      简述Hibernate配置连接池
    * http://developer.51cto.com  2009-09-22 16:04  佚名  it168  我要评论(0)

      本文主要分析的是配置主流Hibernate连接池的方法,旨在读者阅读后清楚连接池配置的细节问题以及根据实际情况选取相应的配置方案。

      本文主要向大家分析的是配置主流Hibernate连接池的方法,旨在读者阅读后清楚连接池配置的细节问题以及根据实际情况选取相应的配置方案。

      1:连接池的必知概念

      首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了。
      以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放。如果频繁的数据库操作,就会导致性能很低。连接池的出现,为开发过程提供了一个很好的管理平台。当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池,将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
      而Hibernate的出现把连接池的使用引入了一个新的利用方式,让你充分享受配置化给开发带来的便利。

      2:Hibernate连接池的配置

      在这里笔者简单介绍一下Hibernate配置连接池的方式:
      方式1:使用Hibernate自带的连接池。
      方式2:使用配置文件指定的数据库连接池。
      方式3:从容器中获取得到连接池(如:Tomcat)

      Hibernate无论采用哪种方式获取连接池的连接,它对Java程序来说是独立的。Hibernate对其采用了配置化处理,也就是当想改变获取数据库连接的方式时,只要修改Hibernate的配置文件就可以了,看看多方便,就是这么简单,这足以让你爱死Hibernate了。哈哈,让我们正式来看看,Hibernate究竟是怎么做的!
      注意:Hibernate配置文件有两钟格式一个是XML格式,一种是properties格式。本文采用的是主流的XML格式来分析!

      (1)使用自带的Hibernate连接池
      Hibernate自带的连接池性能不高,缺乏响应大批量请求以及容错能力,甚至还有BUG,在项目运用中不值得推荐。虽然缺点一罗筐,可也是Hibernate获取连接池的一种方式,在这里笔者仅给出配置方法,以供参考,如下代码所示:

         1. ……….. 
         2. <hibernate-configuration>
         3. <session-factory >
         4. 
         5. <property name="connection.driver_class">com.mysql.jdbc.Driverproperty>
         6. 
         7. <property name="connection.url">
         8. jdbc:mysql://localhost:3306/feifei  
         9. property>
        10. 
        11. <property name="connection.username">rootproperty>
        12. 
        13. <property name="connection.password">property>
        14. 
        15. <property name="show_sql">trueproperty>
        16. 
        17. <property name="dialect">org.hibernate.dialect.MySQLDialectproperty>
        18. 
        19. <mapping resource="/xx/xx.hbm.xml" />
        20. session-factory>
        21. hibernate-configuration>

      (2)使用配置文件指定的连接池

      笔者在这里推荐当今稳定而且主流的数据源,就是Hibernate支持的第三方连接池产品:C3P0,Proxool。随着文章的深入,你会发现他们配置方法也有很大的不同。先来介绍连接池C3P0配置,在写入配置文件之前,用户必须将 c3p0-0.8.4.5.jar这个包放入classpath当中,下面给出其核心配置项其他的配置项可参见上面的方式1。

         1. ……………. 
         2. <property name="c3p0.min_size">5property> >
         3. <property name="c3p0.max_size">30property> 
         4. <property name="c3p0.time_out">1800property> >
         5. <property name="c3p0.max_statement">50property> >
         6. ……………. 

      把上面的配置项添加到hibernate.cfg.xml中就可以了,看看是不是很简单?
      配置Proxool连接池,就没有那么简单了,稍有不同!笔者原先,也按照配置C3P0连接池的方法去配置Proxool,然后一个大大的错误向我“招手”了。无助之下,上网看看有没有解决方法,就找到了一个笔者认为不错的方法,推荐给大家。
      由于Proxool连接池只管理自己产生的连接,Hibernate又需要管理它,怎么办呢?所以我的做法是单独的建立一个XML文件来管理连接池,又在Hibernate里面设置相关的项,让Hibernate与Proxool关联起来。

      当然首先你要把proxool-0.8.3.jar这个包放入classpath,再建立一个ProxoolConf.xml文件,这个文件便于管理建议和 hibernate.cfg.xml文件放在一起。内容如下:

         1. xml version="1.0" encoding="utf-8"?>
         2. >
         3. <something-else-entirely>
         4. <proxool>
         5. <alias>feifeiPoolalias> >
         6. 
         7. <driver-url>jdbc:mysql://localhost:3306/feifei?useUnicode=true&characterEncoding=GBKdriver-url>  
         8. <driver-class> com.mysql.jdbc.Driver driver-class>
         9. <driver-properties>
        10. <property name="user" value="root"/>
        11. <property name="password" value=""/>
        12. driver-properties>
        13. 
        14. <house-keeping-sleep-time>90000house-keeping-sleep-time>
        15. 
        16. <maximum-new-connections>20maximum-new-connections>
        17. 
        18. <prototype-count>5prototype-count>
        19. 
        20. <maximum-connection-count>100maximum-connection-count>
        21. 
        22. <minimum-connection-count>10minimum-connection-count>
        23. proxool>
        24. something-else-entirely>

      然后需要在hibernate.cfg.xml中作配置,参考如下:

         1. ………… 
         2. <property name="proxool.pool_alias">feifeiPoolproperty> >
         3. <property name="proxool.xml">ProxoolConf.xmlproperty> >
         4. <property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProviderproperty>
         5. >
         6. ………… 

      和C3P0连接池不同,Proxool连接池配置有两个步骤,请大家注意!至于c3p0,有评论说它的算法不是最优的,proxool不少行家推荐使用,而且暂时来说,是负面评价是最少的一个。性能是上,笔者也推荐使用这个。

      (3) 从容器中获取得到连接池(如:Tomcat)

      笔者以我们大家常用的Tomcat为例子来描述,Hibernate想要从Tomcat中获取数据源,需要对Tomcat容器与Hibernate分别进行配置。
      <1>在容器中配置数据源
      配置容器的数据源,这里不多讲,属于服务器的配置范畴。假定已经配好了一个JNDI名为“jdbc/feifei”的数据源。
      <2>在hibernate.cfg.xml中指定使用这个名为“jdbc/feifei”的JNDI
      java:/comp/env/jdbc/feifei 

      本文的连接池方案分析就到此为止了。看完了,是不是很有想法?Hibernate配置连接池方面有这么多的方法提供给我们来选,选择的余地多了,发挥的空间也大了。

      3:编后语
      连接池为我们开发带来了极大的便利,它为我们开发者承担了数据库连接管理的压力,让我们从烦琐的数据库事务中解脱出来,专心研究业务逻辑实现业务,是我们的一大福音。
      本文分析的Hibernate连接池配置方案,为读者提供了多种选择。建议读者也根据自己的实际情况来选取方案。文中肯定还有很多纰漏之处,还望大家斧正。讲的不足的地方,以后有机会定当补全!
      【责任编辑:叶淑娟 TEL:(010)68476606】

原文:简述Hibernate配置连接池
    标 签:  Hibernate连接池

上一篇: Hibernate Util简单讨论 下一篇: 解析Hibernate在JSP下的分页技术
网友评论
查看所有评论(0)
通行证: 密码:   注册通行证
发表评论请注意语言文明

验证码: 请点击后输入验证码 点击图片可刷新验证码 匿名发表


            读 书 JavaScript凌厉开发--Ext JS 3详解与实践
  * * 海量网络存储系统原理与设计
    * 用户体验面面观——方法、工具与实践
    * 用户故事与敏捷方法
    * Hadoop权威指南(中文版)

            论 坛 帮忙哦,帮我看看这个拓扑图哪还需要
  * * 最全的windows操作系统快捷键
    * 快速关闭没有响应的程序
    * 创建用来锁定计算机的快捷方式
    * 老系统NT4。0下有没有强杀进程地利器

分享到:
评论

相关推荐

    EJB与Hibernate的整合简述

    6. **性能优化**:整合EJB和Hibernate可以进行性能调优,例如通过调整事务隔离级别、缓存配置、连接池大小等,以适应不同规模和复杂度的应用场景。 7. **部署与配置**:在EJB容器中配置Hibernate,可能涉及到JNDI...

    如何提高hibernate性能

    调整数据库参数,如索引、连接池设置等,也是提高性能的重要环节。 12. **对象状态管理**: 理解并正确管理Hibernate对象的状态(瞬时态、持久态、脱管态和临时态),避免无效的Session操作,可以进一步提升性能...

    hibernate 中文参考手册

    - **连接池**:介绍如何配置 JDBC 连接池。 - **连接配置**:提供 JDBC 连接的具体配置方法。 ##### 3.4 可选配置属性 - **SQL 方言**:解释 SQL 方言的概念及其在 Hibernate 中的作用。 - **外连接获取**:介绍外...

    hibernate 帮助文档

    - **连接池配置**:配置JDBC连接池,以提高性能和效率。 - **连接参数**:设置数据库连接的详细参数。 **3.4 可选的配置属性** - **SQL方言**:选择合适的SQL方言以适配不同的数据库。 - **外连接抓取**:配置外...

    Manning.Java.Persistence.with.Hibernate

    7. **性能优化**:讨论如何通过批处理、懒加载、预加载、连接池等手段优化Hibernate应用的性能。 8. **最佳实践**:提供实际开发中的最佳实践,包括设计模式的应用,以及避免常见陷阱和误区的策略。 9. **JPA与...

    WebWork.Spring.Hibernate整合开发网络书城全系列视屏6

    4. 性能优化:讨论如何通过缓存机制(如Spring的HibernateCache)和数据库连接池来提高系统的性能。 5. 安全性:简述如何集成Spring Security,为网络书城应用添加用户认证和授权功能。 总的来说,这个课程会带领...

    hibernateJAR包

    Hibernate使用dom4j.jar来处理配置文件和元数据,包括XML格式的映射文件等,这对于正确加载和配置Hibernate环境非常重要。 ### Hibernate3.jar – 主要需求 这是Hibernate的核心库,包含了所有的核心功能和API。...

    一个ssh项目的开发笔记

    - **导入jar包:** 包括Hibernate核心包、JPA API、连接池(c3p0)、数据库驱动等。 - **配置hibernate.cfg.xml:** - 数据库连接信息(用户名、密码、URL、驱动等)。 - 可选配置项如方言、日志级别等。 - 映射...

    java面试题

    76.4. 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 86 76.5. 在weblogic中发布ejb需涉及到哪些配置文件 87 76.6. 如何在weblogic中...

    创建基于领域驱动设计的SSH工程.pdf

    - 编辑hibernate.cfg.xml文件,配置Hibernate连接池、映射文件等。 - 编辑jdbc.properties文件,配置数据库连接信息。 ##### 3.5 Maven配置 - 在【DDD-Tutorial】项目的pom.xml中配置模块间的依赖关系。 - 在...

    MyEclipse6java开发教程pdf

    9. **JDBC和数据库连接**:详细阐述JDBC的使用,包括数据库连接池配置,以及在MyEclipse6中进行数据库查询、更新等操作。 10. **EJB与JMS**:简述Enterprise JavaBeans(EJB)的基础知识,以及如何在MyEclipse6中...

    JAVA WEB典型模块与项目实战大全

    13.2 数据库连接池  13.3 commons dbutils组件  13.4 小结  第14章 ajax技术jquary框架的经典应用  14.1 jquery框架的简单应用  14.2 利用jquery框架实现的经典运用  14.3 实现仿google suggest功能...

    ssm框架文档版总结

    - **连接池管理**:使用连接池管理数据库连接,避免频繁创建和关闭连接带来的性能损失。 - **SQL语句分离**:通过XML管理SQL语句,实现Java代码与SQL语句的分离,提高代码的可维护性和可读性。 - **动态SQL支持**:...

    java面试宝典

    94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...

    springboot订单系统

    在订单系统中,可能已经自动配置了数据库连接池、数据访问对象(DAO)和事务管理等组件。 2. **Spring Boot Starter**:Starter是预定义的Maven或Gradle依赖集,它们简化了添加常用功能的过程。例如,`spring-boot-...

    JSP使用JDBC连接MYSQL数据库的方法

    当然,真实应用中还可能需要考虑连接池管理、异常处理、事务控制等高级话题。此外,随着技术的发展,越来越多的开发者开始使用JPA(Java Persistence API)或Hibernate等ORM(Object Relational Mapping)框架,以...

    Java web自学课程安排.pdf

    6. **连接池**:学习JSTL库,配置和使用Apache Commons DBCP、Tomcat连接池。 **第三阶段:流行框架技术** 1. **Struts1**:理解Struts1的工作流程和最佳实践,探讨MVC框架原理,学习反射与动态调用。 2. **Struts...

    java必备知识点大全.pdf

    数据库连接池:数据库连接池是一个存储数据库连接的容器,可以快速提供可用的数据库连接。 MySQL的数据库导入导出:可以通过命令行工具如mysqldump进行数据库的导入导出操作。 JDBC分段批量提交时出现异常的处理:...

    最新Java面试宝典pdf版

    29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1、xml有哪些解析技术?区别是什么? 113 2、你在项目中用到了xml技术的哪些方面?如何实现的? 114 3、用jdom...

Global site tag (gtag.js) - Google Analytics