JDBC和JDBCtemplate区别

文章来自 https://blog.csdn.net/qq_39651022/article/details/78478571

1.背景介绍

Java程序员在以后的工作中很重要的一点就是得和数据库打交道,但是代码和数据库是两个不相干的.

怎么使用代码对数据库进行操作呢,这个时候就用到JDBC。


2.知识剖析

什么是JDBC?

①JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,

可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

而多的这个template,就是模板,是Spring框架为我们提供的.

所以JDBCTemplate就是Spring对JDBC的封装,通俗点说就是Spring对jdbc的封装的模板


3.常见问题

jdbc做了什么?

JDBCTemplate做了什么?

jdbcTemplate是怎么做到的?


4.解决方案

JDBC的原理就是通过Connection这个类获取数据库的连接,

然后通过PreparedStatement类处理SQL语句,再通过它的.setObject方法传入数据,

最后通过方法.executeUpdate()和.executeQuery()执行更新,这就是JDBC的基本原理。

JDBCTemplate帮我们省去了很多麻烦.

②指定数据库连接参数.

打开数据库连接.

预编译并执行SQL语句.

遍历查询结果(如果需要的话).

处理抛出的任何异常.

处理事务.

关闭数据库连接

那么JDBCTemplate怎么做到的,这就和spring有关系了

SpringIOC容器将管理数据库连接的数据源当作普通Java Bean一样管理,

然后将数据源注入封装类JdbcTemplate中,:

JdbcTemplate的dataSource属性就是注入配置的数据源


5.编码实战


6.扩展思考

JdbcTemplate对JDBC的差别在哪?

jdbc需要每次进行数据库连接, 然后处理SQL语句,传值,关闭数据库.

甚至有时还可能会出现数据库忘记关闭导致连接被占用.

在以后的工作中,客户的需求肯定不是一成不变的,这就导致经常会改动数据库内容.

通过JDBCtemplate我们只需更改需要更改的那一部分内容就可以了,不需要进行全局修改.

Spring将替我们完成所有的JDBC底层细节处理工作.


7.参考文献

①百度

②http://www.cnblogs.com/binyue/p/4037628.html


8.更多讨论

(1)使用 jdbc.properties 有什么好处?

假如我们需要更改连接数据库的配置,我们直接在jdbc.properties里面更改一次就可以了.而JDBC的话需要增删改查里面每个连接数据库的配置都需要更改.

(2)如果真的发生数据库连接资源被占用,有什么解决方法

修改 MySQL 安装目录下 my.ini 或者 my.cnf 文件内的 max_user_connections 参数的数值,重启 MySQL 服务器。

(3)jdbctemplate和mybatis分别在什么情况下使用,jdbc template  和spring+mybatis一样吗?,和mybatis相比有什么优缺点?

这三个问题其实差不多.JDBCTemplate和Mybatis不一样,Mybatis的sql语句放在了mapper.xml文件里面.相当于配置在了环境当中,随时都可以使用. 而JDBCTemplate则是写在了实现类里面,使用的时候还要进行重新调用配置之类的. 以后的工作中可能对多个表进行操作,配置在环境中使用起来非常方便.

(4)如何来控制数据库的打开关闭.

Class.forName("com.mysql.jdbc.Driver"); 这个初始化驱动就是打开了数据库链接

Connection c = DriverManager.//连接数据库,

//关闭数据链接

ps.close();

c.close();

而JDBCTemplate的打开关闭则是封装在JDBCTemplate当中.

(5)jdbc 和 jdbctemplate 相比  效率有差别么

单从效率方面来说,实际上jdbc比jdbctemplate的效率会高一点.jdbcTemplate则更方便我们进行更改内容,和理解当中的逻辑.

(6)jdbcTemplate 实现执行多条sql语句.

一种直接用mysql的批量处理语句.

另外一种拼接SQL语句直接一次性提交多少条数据.

(7)jdbcTemplate有什么缺点

必须于Spring框架结合在一起使用、不支持数据库跨平台、默认没有缓存.

原文地址:https://www.cnblogs.com/wrkjwl/p/9107954.html