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修真院:,初学者转行到互联网的聚集地 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |