数据库连接池介绍下,底层实现说下?

本文介绍了数据库连接池的实现步骤,包括DataSource接口的实现、并发管理、多数据库连接和事务处理。还讨论了连接分配与释放策略,以及连接池的配置与维护。最后提到了实际开发中常用的开源连接池组件,如Apache Commons DBCP和c3p0。
摘要由CSDN通过智能技术生成

1、实现DataSource接口,并实现连接池功能的步骤:

  1. 在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入LinkedList对象中, 因为LinkedList是用链表实现的,对于增删实现起来比较容易, 因为每从池中取出一个连接,都要将这个对象从池不删除,当返回时就要添加回去。

  2. 实现getConnection方法,让getConnection方法每次调用时,从LinkedList中取一个Connection返回给用户(即要从池中删除一个对象)

  3. 当用户使用完Connection,调用Connection.close()方法时,Collection对象应保证将自己返回到LinkedList中

2、需要解决的问题

  • 并发问题
    为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为java语言自身提供了对并发管理的支持,使用synchronized关键字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized关键字,如:
    publicsynchronized connection getconnection()
  • 多数据库服务器和多用户
    对于大型的企业级应用,常常需要同时连接不同的数据库(如连接oracle和sybase)。如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。根据资源文件
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值