概念
-
数据源(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。