JDBC Connection、Druid、SqlSession 的区别

252 阅读3分钟

Druid 是一个高性能的数据库连接池,提供了对数据库连接的管理和优化。它与 JDBC Connection 和 SqlSession 有不同的职责分工和作用。它们之间的区别和关系如下:

Druid

定义

Druid 是阿里巴巴开发的一个数据库连接池,主要用于管理和复用数据库连接。它的主要作用是提升数据库连接的性能和稳定性,并且提供了丰富的监控和调优功能。

功能

连接管理:Druid 管理数据库连接的创建、复用和关闭。它会维护一个连接池,应用程序可以从池中获取已经建立好的连接,而不需要每次都重新创建连接。

连接池

Druid 通过连接池技术来复用数据库连接,减少了频繁建立和关闭连接的开销,从而提升了性能。 监控:Druid 提供了强大的监控功能,能监控 SQL 的执行时间、连接的使用情况、连接泄漏等。

工作流程

当应用程序需要与数据库交互时,它会向 Druid 请求一个连接。Druid 从连接池中分配一个可用的 JDBC Connection 给应用程序使用,应用程序在使用完后,将连接归还给池中,而不是关闭它。

JDBC Connection

定义

JDBC Connection 是 Java 提供的 API,用于与数据库建立连接。它是一个底层的对象,通过它可以执行 SQL 语句、管理事务等。

功能

JDBC Connection 代表与数据库的一个会话,所有的 SQL 操作(查询、插入、更新、删除)都需要通过 Connection 对象来完成。

管理

如果没有连接池,JDBC Connection 是由应用程序手动创建和关闭的。但是在有连接池的情况下,JDBC Connection 是由连接池(如 Druid)来管理的,应用程序无需关心连接的创建和关闭。

SqlSession

定义

SqlSession 是 MyBatis 提供的一个接口,用于执行映射 SQL 语句,获取映射结果,以及管理事务。它通过 JDBC Connection 来执行具体的数据库操作。

功能

SqlSession 提供了对数据库操作的高层次封装,使得开发者可以更方便地执行 CRUD 操作。SqlSession 内部使用 JDBC Connection 来与数据库交互。

管理

SqlSession 通常是短暂的,会话结束后就会关闭,而 JDBC Connection 会被归还给连接池。

关系与区别

Druid vs JDBC Connection:

管理者 vs 被管理者

Druid 是管理 JDBC Connection 的工具,它维护了一个连接池,用于复用和管理 JDBC Connection 对象。

优化

Druid 提供了连接池的优化功能,减少了频繁创建和销毁 JDBC Connection 的开销,并且提供了丰富的监控和调优能力。

SqlSession vs JDBC Connection:

高层封装 vs 底层实现

SqlSession 是 MyBatis 提供的一个高层次的数据库操作接口,内部使用 JDBC Connection 来实际执行 SQL 操作。

短暂 vs 复用

SqlSession 的生命周期通常是短暂的,而 JDBC Connection 是可以被复用的,由 Druid 等连接池来管理其生命周期。

Druid vs SqlSession:

连接管理 vs SQL 执行

Druid 负责管理数据库连接的生命周期,而 SqlSession 负责通过这些连接执行 SQL 语句。

独立 vs 依赖

SqlSession 依赖于 JDBC Connection 来工作,而 JDBC Connection 是由 Druid 来管理的。

总结

  • Druid:负责管理 JDBC Connection 对象,优化数据库连接的使用,提供连接池和监控功能。

  • JDBC Connection:底层数据库连接对象,用于实际执行 SQL 语句和管理事务。

  • SqlSession:MyBatis 提供的接口,通过 JDBC Connection 来执行 SQL 操作,生命周期较短。

在开发中,Druid 通过连接池技术优化了 JDBC Connection 的使用,而 SqlSession 则通过这些连接来完成具体的数据库操作。