…银行转账。当从A户像B账户转1000 元后银行系统会从A账户上扣除 1000 元,而在B账户上增加 1000 元,这是正确处理的结果。但如果银行系统出错了怎么办,这里假设发生两种情况:
(1 ) A账户少了 1000 元,但B户却没有多出 1000
( 2) B账户多了 1000 元钱,但 A账户却没有被扣钱。
…客户和银行都不愿意看 上面两种情况 那么有没有措施保证转账顺利进行?这种措施就是数据库事务管理机制。
…Spring 事务管理简化了传统的数据库事务管理流程,提高了开发效率,但在学习事务管理前需要了解 Spring 数据库编程。
…数据库的编程是互联网编程的基础, Spring 为开发者提供了 JDBC 模板模式,那就是它自身的 jdbcTemplate ,它可以简化许多代码的编程,但是在实际的工作中 jdbcTemplate 并不常用,在工作中更多的时候是使用 Hibernate 框架和 MyBatis 框架进行数据库编程。
Spring JDBC的配置
<!-- 注册数据源:Spring内置连接池 -->
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- MySQL数据库驱动 -->
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"> </property>
<!-- 连接数据库的URL -->
<property name="url" value="jdbc:mysql://localhost:3306/text?serverTimezone=UTC"/>
<!-- 连接数据库的用户名-->
<property name="username" value="root"/>
<!-- 连接数据库的密码-->
<property name="password" value="root"/>
</bean>
<!-- 配置JDBC模板 -->
<bean id="MyJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="myDataSource"> </property>
</bean>
在上述示例代码中 ,配置 JDBC模板时需要 dataSource 注入到jdbcTemplat ,而在数据访问层( Dao 类〉需要使用 jdbcTemplate时也需要将 jdbcTemplate 注入到对应 Bean中。
Spring JdbcTemplate的常用方法
JdbcTemplate 与JDBC
…传统的JDBC 即使是执行一条简单的 SQL ,其过程也不简单,先打开数据库连接执行 SQL,然后组装结果 最后关闭数据库资源。但是太多的try… catch … finally …语旬,造成了代码泛滥。执行如 简单的 SQL 就需要这么多的代码,显然让开发者很头疼。如果用得好 JDBC ,其性能是最好的,但是太多的 catch … finally … 语句需要处理,数据库资源的打开、关闭都是定性的,甚至在大部分情况下,只要发生异常数据库的事务就会回滚,否则就提交,二者都是比较固定的模式。在Spring 没有出现前,许多开发者在JDBC 中滥用着 try… catch … finally … 语句,导致代码可读性和可维护性急剧下降 从而引发信任问题。为了解决这些问题, Spring提供了自己的方案,那就是 JdbcTemplete 模板。
1、使用JdbcTemplete不需要书写任何关闭对应数据资源的代码。