数据源、JDBC、MyBatis、连接池(Druid)

概念

  • 数据源(DataSource)
    是一种数据库对编程提供的一个接口,每个数据源对应一个数据库。一个例子就是在使用IDEA的数据库插件时,通常需要选择数据源,此处的数据源就是指这个。

  • JDBC
    Java Database connector,是java提供的一套用于执行sql语句的API。他通过数据库驱动和数据库建立连接,且每次建立连接都需要传入用户配置(用户名、密码等),并在执行结束后手动关闭连接。

  • DataSource in Java
    除了“数据源”外,jave还提供了一个名为DataSource(javax.sql包下)的类,该类对JDBC做了一定的封装,有两个getConnection方法用于获取连接。类似于JDBC这个类通过数据库驱动和数据库建立连接,用户在使用DataSource时也需要传入用户名、密码等参数来支持连接,但不同的时,仅需要配置一次信息,之后可以使用DataSource实例来直接获取连接。

  • 连接池
    以上过程中,每次执行sql语句都需要执行一遍连接的创建与销毁,而连接池的引入则优化了这个问题,当项目启动时,连接池内就创建了若干准备好的连接,需要执行sql操作时就直接到连接池中取,执行完毕后再放到池中,除非连接池中没有可用链接,才会创建新的连接,这样就省去了不断的创建与销毁

  • DruidDataSource
    除了java原生的DataSource,也有很多其他机构开发的DataSource,如阿里的DruidDataSource,一般称为“德鲁伊”。DruidDataSource是DataSource的子类,也提供getConnection等操作,同时,德鲁伊也提供一个连接池,所以使用德鲁伊进行sql语句执行时,可以手动getConnection也可以使用连接池中的连接来完成任务。

  • MyBatis
    MyBatis是对JDBC的封装,在原生JDBC中,每次执行语句需要:① 加载数据库驱动;② 创建连接;③ 写原生sql语句;④ 执行;⑤ 关闭所用资源。而MyBatis则是根据配置自动完成上述任务,且MyBatis支持使用连接池来加快程序运行效率,所以现在开发时,多使用MyBatis+DruidDataSource的组合,当然他们底层都会依赖JDBC。

关系图

YIYUYI:DB流程图

阶段总结

DataSource从逻辑上对数据库进行映射:它隐藏了物理数据库和驱动的存在、封装了JDBC的操作,使用户只看到DataSource对象;

但是尽管如此,执行sql语句时仍然需要建立连接再执行;

而MyBatis则是对数据源做了一个比较好的封装:它真正地隐藏了建立连接、销毁连接的过程。它接受一个DataSource和相应的配置,在操作数据库时,用户仅需提供sql语句即可。同时,MyBatis接受连接池来提高sql语句执行效率,以上,DruidDataSource则充当了提供数据源对象和连接池的角色。

Demo:待续

posted @ 2023-01-11 17:12  YIYUYI  阅读(414)  评论(0编辑  收藏  举报