13|JDBC访问框架:如何抽取JDBC模板并隔离数据库?
JDBC 通用流程
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何通过抽取JdbcTemplate来实现JDBC访问框架的技术特点。首先介绍了JDBC的通用流程,包括加载数据库驱动程序、获取数据库连接、创建Statement对象、执行SQL语句、操作ResultSet结果集以及回收数据库资源的流程。然后,提出了抽取JdbcTemplate的基本思路,即动静分离,将固定的套路作为模板定下来,变化的部分让子类重写。通过示例代码,展示了如何实现JdbcTemplate抽象类,并在子类中实现具体的业务逻辑处理。强调了这种结构的实用性,能够将JDBC程序流程固化下来,分离出变化的部分,让应用程序员只需要管理SQL语句并处理返回的数据。另外,还介绍了Callback模式的应用,通过回调函数作为参数传递,简化了业务实现类的编写。最后,结合IoC容器,展示了如何将JdbcTemplate定义为一个Bean,通过@Autowired自动注入,剥离了应用程序中与数据库访问相关的代码。整体而言,本文通过实际代码示例生动地展示了如何抽取JdbcTemplate并隔离数据库的技术特点,为读者提供了快速了解JDBC访问框架的概览。文章通过模板化、Callback模式和IoC容器的叠加手段,简化了数据库操作,重构了数据访问的程序结构,同时抽取出了数据源的概念,包装connection,让应用程序和底下的数据库分隔开。文章还提出了一道思考题,引发读者思考和交流。
《手把手带你写一个 MiniSpring》,新⼈⾸单¥59
全部留言(4)
- 最新
- 精选
- peter请教老师几个问题: Q1:JDBC driver复杂吗?代码规模一般多大?能否以加餐形式讲一下driver? Q2:JDBC Template还有用吗? 现在一般的开发都是SSM或SSH,不会用JDBC Template。 Q3:JDBC template能支持多大并发? 用JDBC template的话,一个数据库实例,比如一个mysql实例,能支持多大的并发量?200?
作者回复: driver基础功能也不是很复杂,主要是了解数据库系统提供的api,现代数据库都提供了java api,就更简单了。我那个时候只有c语言的api,所以还要用JNI技术来做。基础功能c代码记得我就几千行。 jdbc template很少直接使用了,一般用mybatis或者jpa,但是也有系统是用的。我个人认为了解jdbc template很有好处。这个话题比较大,见解不同,我自己不是很支持orm技术。我的观点,因为底下的数据库系统是关系模型,是一种代数演算,跟对象模型天然有隔,一味进行orm,我觉得是对面向对象的滥用。我在我的《认识编程》一书中讲到了这个观点。 数据库并发数,跟jdbc template关系不大,是数据库系统和缓存系统主要决定的,实际上,包装越少性能越好,jdbc template就是一层薄薄的包装。
2023-04-11归属地:北京7 - 云从如果本地测试能够连接mysql 但是tomcat中可连接不上的话 看看tomcal lib 下面有没有mysql 的驱动
作者回复: 自己放一个mysql jar包就行
2023-06-21归属地:四川 - 马儿实现dml语句如果只是简单的实现就像最初的那一版拼接sql就可以实现了,但是这样的话需要每次更新都手动拼接sql比较麻烦。如果想要传入相应的对象就更新,可以利用本节课的callback来实现将相应的对象字段转换为sql语句的过程。但是这节课的结果可能整体上离最终感知不到sql还比较远,如果需要完全不感知sql应该是用一个类专门负责根据类属性的注解来自动映射。
作者回复: 目标不同,jdbc template不是为了完全不感知sql。minispring没有讨论orm这个议题。
2023-04-11归属地:四川 - C.前几天有点忙,这次补齐了。https://github.com/caozhenyuan/mini-spring.git。请看jdbc1、2、3分支2023-04-27归属地:江苏