Java开发者必须掌握:数据库连接池技术

Posted JAVA炭烧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java开发者必须掌握:数据库连接池技术相关的知识,希望对你有一定的参考价值。

简介


数据库连接池技术是一种提升应用程序性能的技术,核心作用是管理是连接到数据库的多个连接的打开和释放,即形成连接池管理。应用程序需要连接时使用它,使用完毕后又将其放回连接池中。当应用程序需要连接时,就绪连接一直保持可用状态。池管管理数据库连接的生命周期,这样开发人员实际上不需要等待连接建立,或者手动关闭连接。

连接池机制节省昂贵的操作及资源消耗,方便了应用程序运行时建立网络连接,并最终在后端初始化数据库会话。

2. Tomcat中的连接池的实现方式

我们最常用的应用程序服务器Tomcat与Commons DBCP Datasource打包为默认JNDI数据源,除非我们明确指定DataSourceFactory为 -

使用 Apache Commons DBCP连接池:

使用Tomcat JDBC连接池 :

工厂模式是必需的,类型是javax.sql.DataSource

DBCP的优点在于它可以与许多应用程序或框架一起使用,并且可以与市场上几乎所有的数据库一起使用。

3.连接池作用机制对比

在使用Commons DBCP连接池机制时,Tomcat会获取Commons DBCP源(版本取决于Tomcat版本,例如Tomcat 7.0.27使用Commons DBCP 1.4),并执行包名替换(org.apache.commons - > org.apache.tomcat.dbcp)并将结果构建为tomcat-dbcp.jar。这样做是为了使内部Tomcat JDBC池永远不会与Commons DBCP类的可能应用程序使用发生冲突。这样就避免了许多潜在的类加载问题。“dbcp”包是关于数据源管理的。

同样,Tomcat JDBC连接池机制(org.apache.tomcat.jdbc.pool.*) 是与Apache Commons DBCP竞争的数据库连接池的替代升级实现。它是Tomcat的一个独立项目(在Tomcat模块 - > jdbc-pool下),但它在Tomcat 7(从2011年7月的7.0.19开始)中首次推出。这两种实现都有优点和缺点,但Apache Commons DBCP仍然在被广泛使用。

无论哪种情况,都需要将相应的JAR(commons-dbcp.jar或tomcat-jdbc.jar)包含在构建路径中。

较早版本的Apache Commons DBCP(即1.2版本)在高负载条件下有一些令开发者烦恼的线程安全问题,使其不适合这种用法,这就是Tomcat JDBC连接池被重写的原因。

Tomcat JDBC连接池的使用也非常简单,对于已经熟悉DBCP的人来说,转换非常简单。

4.基于Hibernate的应用程序中的连接池

Hibernate根据你所配置的属性来确定要使用哪个连接池提供给程序使用。

使用c3p0的 配置

使用Apache Commons DBCP的配置

相应的JAR文件需要在lib目录中手动添加或使用Maven的POM文件配置。

我们也可以用
hibernate.connection.provider_class属性明确指定连接池提供者,不过通常不是必要的

如果我们不使用Hibernate配置连接池,则使用默认值。当我们启动应用程序时,它在日志或控制台输出中可见

org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure

Hibernate中的默认连接池实现不适合生产使用,主要是因为它的配置约束。

如果您使用的是应用程序服务器,则可能希望使用内置池(通常使用JNDI获得连接)。

要使用Hibernate使用JNDI配置来使用服务器的内置池,我们需要将以下属性设置为Hibernate配置文件

hibernate.connection.datasource=java:/comp/env/jdbc/TestDB

假设TestDB是Tomcat JDBC连接池数据源的JNDI名称。

如果您不能或不想使用应用程序服务器的内置连接池,Hibernate支持其他几个连接池,例如

  1. C3P0
  2. Proxool

在Apache DBCP之后,第二个最受欢迎的连接池实现是c3p0,它可以轻松地与Hibernate集成,一般认为它可以提供良好的性能。

最后

最近我整理了整套《JAVA核心知识点总结》,说实话 ,作为一名Java程序员,不论你需不需要面试都应该好好看下这份资料。拿到手总是不亏的~我的不少粉丝也因此拿到腾讯字节快手等公司的Offer

Java进阶群

好了,以上就是本文的全部内容了,如果觉得有收获,记得三连,我们下期再见。

以上是关于Java开发者必须掌握:数据库连接池技术的主要内容,如果未能解决你的问题,请参考以下文章

什么是Java web开发中数据库的连接池技术,它的原理大致是什么?

咕泡P6:Java互联网高级架构师(SVIP涨薪班)

咕泡P6:Java互联网高级架构师(SVIP涨薪班)

java web开发 数据库连接池啥时候初始化

搞软件开发,请你来谈谈数据库连接池的原理吧

主流Java数据库连接池比较与开发配置实例