JdbcTemplate is threadsafe?

JdbcTemplate is threadsafe?

问题的起因在今天下午看 Rod Johnson 《Professional Java Development with the Spring Framework》 Chapter 5 (DAO Support and JDBC Framework)时,碰到的一句话 “JdbcTemplate is a stateless and threadsafe class and you can safely instantiate a single instance to be used for each DAO.”

这个问题困惑我好久,花了大半个晚上的时间也没有搞明白具体是怎么回事,从这个类本身的角度上来说,其是一个JavaBean,因为其含有多对accessor。从传统意义的多线程角度来理解,可能修改实例变量的方法如果没有保持同步,那么该方法可以认为是线程不安全的;还有按照我原来的理解,如果说一个class是stateless class,那么其不应该包含属性。这所有的外在现象都让我十分的迷惑,看来还是对基础的东西有所欠缺,整天在忙用户的需求、项目管理等其他的事情,忽略了许多本质性的东西。

后来在论坛上看到一篇有关spring 事务处理的文章,从中得到了一些思路,但是还是没有完全彻底搞明白。文章的 引用地址

以后在好好想想这个问题,今天太晚了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JdbcTemplateSpring框架中提供的一个对象,用于简化对关系型数据库的操作。它还提供了事务处理的功能。下面是JdbcTemplate处理事务的步骤[^1]: 1. 创建JdbcTemplate对象:首先,需要创建一个JdbcTemplate对象,并设置数据源(DataSource)。 ```java JdbcTemplate jdbcTemplate = new JdbcTemplate(); jdbcTemplate.setDataSource(dataSource); ``` 2. 配置事务管理器:接下来,需要配置一个事务管理器(TransactionManager),用于管理事务的开始、提交和回滚。 ```java PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource); ``` 3. 开启事务:在需要进行事务处理的方法上,使用@Transactional注解来标记该方法需要进行事务管理。 ```java @Transactional public void performTransaction() { // 事务处理的代码 } ``` 4. 执行事务操作:在标记了@Transactional注解的方法中,可以执行数据库的增删改查操作,JdbcTemplate会自动管理事务的开始、提交和回滚。 ```java public void performTransaction() { jdbcTemplate.update("INSERT INTO table_name (column1, column2) VALUES (?, ?)", value1, value2); jdbcTemplate.update("UPDATE table_name SET column1 = ? WHERE column2 = ?", value1, value2); // 其他数据库操作 } ``` 5. 提交或回滚事务:当方法执行完毕时,如果没有发生异常,则事务会被自动提交。如果发生异常,则事务会被回滚。 ```java @Transactional public void performTransaction() { try { // 事务处理的代码 } catch (Exception e) { // 异常处理 } } ``` 这样,通过JdbcTemplate和事务管理器的配合,可以实现对数据库操作的事务管理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值