当前位置: 首页 > 面试题库 >

如何配置以在Spring + JDBC中关闭自动提交?

满才
2023-03-14
问题内容

我在JDBC中使用Spring,发现它是自动提交的。

如何配置以在spring-servlet.xml中将其关闭?

这是我当前的配置:

<bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
    p:driverClassName="${jdbc.driverClassName}"
    p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
    p:password="${jdbc.password}" />

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"/>
</bean>

问题答案:

看来我的配置错过了这一行:

<tx:annotation-driven transaction-manager="txManager"/>

然后,在我的服务类中,我使用@Transactional批注。例如

@Service
class CompanyServiceImpl implements CompanyService{
    @Autowired
    private CompanyDAO companyDAO;

    @Transactional
    public void addCompany(Company company) {
            companyDAO.addCompany(company); // in here, there is JDBC sql insert
            companyDAO.addCompany_fail(company); // just for test
    }
}

如果addCompany_fail()中发生异常,则第一个addCompany()也将被回滚。

我阅读了这份文档,以了解在Spring中如何控制事务。
http://static.springsource.org/spring/docs/3.0.x/spring-framework-
reference/html/transaction.html

我阅读了本文档,以了解如何在Spring中使用JDBC进行编码。
http://static.springsource.org/spring/docs/3.0.x/spring-framework-
reference/html/jdbc.html

我还阅读了这个(免费)http://www.infoq.com/news/2009/04/java-transaction-models-
strategy。真的很好。我对作者的看法是,大多数人都不了解(或关心)交易。

PS:似乎很多人误解了使用这种Hibernate / Spring框架只是为了避免JDBC和事务控制的复杂性。许多人认为,“
JDBC和事务是如此复杂,只需使用Hibernate而不用考虑这两者”。互联网上有关Spring + Hibernate或Spring +
JDBC的许多示例似乎根本不在乎事务。我觉得这是个坏笑话。交易太严重了,以至于在没有真正理解的情况下让某些事情来处理。

Hibernate和Spring是如此强大且如此复杂。然后,就像有人说的那样,“强大的力量伴随着责任”。

**更新:2013-08-17:** http **://www.byteslounge.com/tutorials/spring-
transaction-propagation-tutorial上**
有一个很好的交易示例。但是,这并不能说明如果您想使用REQUIRES_NEW,为什么需要创建另一个类(否则,您将遇到此问题:Spring事务传播为REQUIRED,REQUIRES_NEW,看来REQUIRES_NEW并没有真正创建新的事务)

更新日期:2018年1月1日:
我已创建了春天引导1.5.8.RELEASE一个完整的例子这里https://www.surasint.com/spring-boot-database-
transaction-jdbi/ 这里一些基本的实验例子HTTPS ://www.surasint.com/spring-boot-connection-
transaction/



 类似资料:
  • 本文向大家介绍postgresql 如何关闭自动提交,包括了postgresql 如何关闭自动提交的使用技巧和注意事项,需要的朋友参考一下 postgresql中默认是自动提交的 查看是否是自动提交: 关闭自动提交: 另一种方式就在会话开始的时候以begin开始相当于关闭了自动提交,以end或者commit结束就可以了 补充:pg(hgdb)默认事务自动提交 默认情况下,AUTOCOMMIT(自动

  • 有人尝试过在Spring-Boot中禁用mongodb的自动配置吗? 我正在使用spring-data-mongoDB试用spring-boot;使用基于java的配置;使用Spring-Boot1.2.1.Release,我导入了spring-boot-starter-web及其父pom来进行依赖关系管理。我还导入了spring-data-mongodb(也尝试了spring-boot-star

  • 每当我试图使用ODBC驱动程序访问MDB文件时,它都会给我一个错误: 因此,我决定使用UCanAccess JDBC驱动程序。

  • < b >想改进这个问题?通过编辑此帖子更新问题,使其只关注一个问题。 我厌倦了搜索谷歌,并得到了这样。这些链接是参考 jboss eap 6. 2.内置JMS里有Jboss eap 7有吗?还是需要手动配置? 3 .使用Jboss eap 7的示例应用程序?

  • 但是,我在任何地方都找不到JDBC驱动程序本身(jar文件)。似乎有一个从Cloudera下载的jar文件,但需要注册。 有没有人知道在哪里获得简单的Apache Hive JDBC驱动程序本身?

  • 基本上,我想问的是:将Spring Boot自动配置的bean自动导入XML配置文件的等价物是什么? 下面是我的主要Spring Boot入口点,它只是所有文档中列出的标准类: 我主要在一个Spring集成应用程序中使用它,在这个应用程序中Java配置还没有得到很好的支持,框架的核心是基于XML配置的,但是我希望在一些集成元素中使用Spring Boot自动配置的和bean。 https://gi