Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring使用普通jdbc和事务管理-事务不是maintane_Java_Spring_Spring Mvc_Transactions_Spring Jdbc - Fatal编程技术网

Java spring使用普通jdbc和事务管理-事务不是maintane

Java spring使用普通jdbc和事务管理-事务不是maintane,java,spring,spring-mvc,transactions,spring-jdbc,Java,Spring,Spring Mvc,Transactions,Spring Jdbc,我正在用jersey rest Webservice处理Spring。我使用spring事务支持进行事务管理。但它不起作用。以下是我的配置: datasource.xml <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" p:driverClass="com.mysql.jdbc.Driver" p:jdbcUrl="j

我正在用jersey rest Webservice处理Spring。我使用spring事务支持进行事务管理。但它不起作用。以下是我的配置:

datasource.xml

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close" p:driverClass="com.mysql.jdbc.Driver"
        p:jdbcUrl="jdbc:mysql://localhost:3306/test" p:user="pass" p:password="root"
        p:acquireIncrement="5" p:idleConnectionTestPeriod="60" p:maxPoolSize="100"
        p:maxStatements="50" p:minPoolSize="10" />

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

    <!-- Enable Annotation based Declarative Transaction Management -->
    <tx:annotation-driven proxy-target-class="true"
        transaction-manager="transactionManager" />
来电者

            Product product= new Product();
            customerDao.insertCustomer(product.getCustumer());
            prderDao.insertOrder(product.getOrder());

            ctx.close();
ISSUE>在product.getOrder中引发异常后,数据仍保留在customer表中


有人能帮帮我吗。在advanced

中感谢您,为什么要维护该交易?
@Transactional
给出了事务边界,即从输入方法开始,在方法cal之后结束。因此,在
insertCustomer
之后,事务结束。调用方(通常是服务层)应该是事务性的,而不是dao层。@M.Deinum i want事务应该在“customerDao.insertCustomer(product.getcustomer());”之前启动并在“prderDao.insertOrder(product.getOrder());”之后结束所以,若在insertOrder中抛出错误,那个么insert customer应该回滚,并且根据我的阅读,在dao和服务层使用@Transactional,它将使用需要传播的默认传播行为。所以,若问题发生在第二个事务中,那个么第一个事务将被回滚。我在您提供的内容中看到的是,只有DAO被注释,并没有其他注释。让我有点害怕的是
ctx.close()
,这让我想知道您是否每次需要dao时都在构建一个新的
ApplicationContext
,而不是使用依赖注入。另外,Jersey托管bean上的
@Transactional
也不起作用,它只在Spring托管bean上起作用。很抱歉,这只是我的应用程序的示例代码,因为我无法将代码粘贴到internet上。我的应用程序是web应用程序。我用@Transactional注释了serviceObject和Dao对象。以及在服务中调用多个dao方法。我希望在哪里管理交易
            Product product= new Product();
            customerDao.insertCustomer(product.getCustumer());
            prderDao.insertOrder(product.getOrder());

            ctx.close();