加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

jdbc和jdbcTemplate

发布时间:2020-12-14 06:36:36 所属栏目:Java 来源:网络整理
导读:这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【jdbc和jdbcTemplate 】 .背景介绍 jdbc和jdbcTemplate都是我

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【jdbc和jdbcTemplate 】

.背景介绍

jdbc和jdbcTemplate都是我们常用来操作数据库的编程语言,今天我们来了解一下,jdbc和jdbcTemplate

有什么不同,分别是怎么对数据库进行操作的。

二.知识剖析

什么是JDBC?

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

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

什么是JDBCTemplate

相比JDBC,jdbcTemplate在名字上多了一个Template,而多的这个template,就是模板,是Spring框架为我们提供的,

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

三.常见问题

jdbc是怎么对数据库进行操作的?

jdbcTemplate是怎么对数据库进行操作的?

jdbcTemplate实现原理

JDBCTemplate和JDBC的优缺点

四.解决方案

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

然后通过PreparedStatement类处理SQL语句,

再通过它的.setObject方法传入数据,

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

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

指定数据库连接参数.

打开数据库连接.

预编译并执行SQL语句

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

处理抛出的任何异常.

处理事务.

关闭数据库连接

这就和spring有关系了

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

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

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

JDBC

优点:运行期:快捷、高效

缺点:编辑器:代码量大、繁琐异常处理、不支持数据库跨平台

JDBCTemplate

优点:运行期:高效、内嵌Spring框架中、支持基于AOP的声明式事务

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

五.编码实战

六.扩展思考

1.jdbc里为什么要用Class.forName(jdbcName)

Class.forName("com.mysql.jdbc.Driver")的作用实际上就是调用DriverManager的registerDriver方法注册一个mysql的JDBC驱动(Driver)

Class.forName(String className)的作用

第一是CLASSPATH下指定名字的.class文件加载到Java虚拟机内存中。

第二是初始化这个类。

2.为什么删除Class.forName("com.mysql.jdbc.Driver")还是可以运行?

1996年1月23日JDK1.0发布,Java语言有了第一个正式版本的运行环境。JDBC是1997年2月19日,在JDK1.1的版本中发布的,从版本就看得出,JDBC属于Java技术的一些最基础的功能点。那在JDK1.5之后,其实已经不需要去显式调用Class.forName("com.mysql.jdbc.Driver")了,DriverManager会自动去加载合适的驱动,但是前提是CLASSPATH下必须有驱动jar包。

3.为什么要使用占位符"?"

美化代码,防sql注入式攻击("' or '1' = '1")

七.参考文献

https://blog.csdn.net/sx_ygl/article/details/54018072

https://www.cnblogs.com/xrq730/p/4851648.html

八.更多讨论

1.问题:如何来控制数据库的打开关闭.

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

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

//关闭数据链接

ps.close();

c.close();

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

2.问题:jdbc 和 jdbctemplate 相比? 效率有差别么

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

3.问题:如果真的发生数据库连接资源被占用,有什么解决方法

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

感谢师兄,此教程是在他们之前技术分享的基础上完善而成。

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

PPT链接?视频链接

更多内容,可以加入IT交流群565734203与大家一起讨论交流

这里是技能树·IT修真院:,初学者转行到互联网的聚集地

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读