Mybatis 数据库连接池的实现示例
作者:语言-逆行者
在Java应用程序中,与数据库的连接是非常昂贵的,因此,当我们使用MyBatis进行数据操作时,需要一个连接池来分配并管理这些连接,本文主要介绍了Mybatis 数据库连接池的实现示例,具有一定的参考价值,感兴趣的可以了解一下
1)数据库连接池定义
- 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
- 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。也就是,如果某个操作占用的连接超出了预定的时间,就会自动释放连接。
2)连接对象工作原理
【1】无连接池
- [1]每次执行某个操作的时候,需要手动建立一个连接对象。
- [2]再使用连接对象去访问数据库执行相关的操作。
- [3]当应用程序不再需要这个连接时,它会关闭连接。
- [4]如果应用程序需要再次连接数据库,它会重新创建一个新的数据库连接。
【2】有连接池
- [1]初始化连接池。在系统启动时,连接池会生成一定数量的数据库连接,并将这些连接放入池中。
- [2]获取连接。当应用程序需要与数据库进行交互时,它会从连接池中获取一个可用的连接。
- [3]使用连接。应用程序使用连接进行数据库操作。
- [4]释放连接。当应用程序完成数据库操作后,它会将连接返回给连接池,而不是将连接关闭。这样可以避免频繁地创建和销毁连接,提高系统性能。
- [5]销毁连接。如果连接池中的连接长时间未被使用,连接池会将这些连接销毁,以释放系统资源。
3)标准接口DataSource
- 官方(sun)提供的数据库连接池接口,由第三方组织实现此接口。
- 它定义了访问数据库的标准方法。这些方法包括从数据库中检索数据并将其返回到Java应用程序,以及将数据写回到数据库中的能力。
DataSource接口提供以下方法:
方法 | 描述 |
---|---|
getConnection() | 获取一个数据库连接 |
getConnection(String username, String password) | 获取一个带有用户名和密码的数据库连接。 |
getLoginTimeout() | 获取登录超时时间。 |
setLoginTimeout(int seconds) | 设置登录超时时间。 |
getLogWriter() | 获取一个PrintWriter,用于将日志消息写入。 |
setLogWriter(PrintWriter out) | 设置一个PrintWriter,用于将日志消息写入。 |
unwrap(Class iface) | 将DataSource转换为指定接口的实现对象。 |
isWrapperFor(Class<?> iface) | 判断是否DataSource实现了指定接口。 |
getLoginTimeout() | 获取登录超时时间。 |
setLoginTimeout(int seconds) | 设置登录超时时间。 |
getLogWriter() | 获取一个PrintWriter,用于将日志消息写入。 |
setLogWriter(PrintWriter out) | 设置一个PrintWriter,用于将日志消息写入。 |
unwrap(Class iface) | 将DataSource转换为指定接口的实现对象。 |
isWrapperFor(Class<?> iface) | 判断是否DataSource实现了指定接口。 |
4)常用的数据库连接池
C3PO、 DBCP、Druid(德鲁伊)、HIkari(追光者),主要介绍常用的最后两个。
【1】 Druid(德鲁伊)
- 阿里巴巴开源的数据库连接池项目
- 功能强大,性能优秀,是java语言最好的数据库连接池之一
【2】 Hikari(追光者)
SpringBoot默认自带的连接池
运行SpringBoot项目的一个测试例子,可以得知是默认使用Hikari连接池。
5)如何切换连接池?
pom.xml文件配置
在pom.xml配置文件中引入德鲁伊的起步依赖
依赖坐标如下:
<!--引入德鲁伊的起步依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>
刷新后还是不行的需要去application配置文件声明一下type。在application.properties文件中加上type的配置信息:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
测试切换成功
到此这篇关于Mybatis 数据库连接池的实现示例的文章就介绍到这了,更多相关Mybatis 数据库连接池内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!