数据源的知识

数据库链接的建立和关闭是极其耗费系统资源的操作。通过DriverManager获取的数据库连接,一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完后立即关闭连接。频繁的打开、关闭连接将造成系统性能的低下。(原生的JDBC)

对于共享资源的情况,有一个通用版的设计模式:资源池。用于解决资源的频繁请求、释放所造成的性能下降。为了解决数据库连接的频繁请求、释放,JDBC2.0引入了数据源技术。在JDBC 扩展包中定义了javax.sql.DataSource接口,它负责建立与数据库的连接,在应用程序访问数据库时不必编写连接数据库的代码,可以直接从数据源获得数据库连接。数据源作为一个不能直接看到它具体存在的东西,它的作用就是获取数据库连接。

在数据源的具体实现中,有的数据源引入了连接池的技术。在DataSource中事先建立了多个数据库连接,这些数据库连接保存在连接池中。java 程序访问数据库时,只需从连接池中取出空闲状态的数据库连接,当程序访问数据库结束时,再将数据库连接返回给连接池,这样做可以提高访问数据的效率。

一些常用的数据源

C3P0:
C3P0是一个开源的jdbc连接池,它实现了数据源和jndi绑定,支持jdbc3规范和jdbc2的标准扩展。c3p0是异步操作的,缓慢的jdbc操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。c3p0有自动回收空闲连接功能。

druid:
该数据源自带SQL监控、SQL防火墙、Web应用监控、Url监控、Session监控、spring监控,而且使用起来很方便、只要在web.xml中或spring的配置文件中加以配置即可。

DBCP:
(DataBase connection pool)数据库连接池。是apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。

JNDI:

JNDI(Java Naming and Directory Interface,Java命名和目录接口),你在配置文件中已经定义好啦某个你要用到的功能的名字,然后在程序中通过这个名字找到你需要的东西。

使用:
在J2EE容器(Tomcat)中配置JNDI参数,定义一个数据源,也就是JDBC引用参数,给这个数据源设置一个名称;然后,在程序中,通过数据源名称引用数据源从而访问后台数据库。

猜你喜欢

转载自blog.csdn.net/jdfk423/article/details/82961094