Tag: 交易

在JUnit中使用Springtesting服务时如何回滚数据库事务?

我没有问题testing我的DAO和服务,但是当我testingINSERT或UPDATE我想回滚事务,而不是影响我的数据库。 我在我的服务中使用@Transactional来pipe理事务。 我想知道,是否有可能知道一个事务是否可以正常工作,但是为了防止改变数据库而回滚它? 这是我的testing: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:/META-INF/spring.cfg.xml") @TransactionConfiguration(defaultRollback=true) public class MyServiceTest extends AbstractJUnit38SpringContextTests { @Autowired private MyService myService; @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Test public void testInsert(){ long id = myService.addPerson( "JUNIT" ); assertNotNull( id ); if( id < 1 ){ […]

有没有更好的方法来检测一个Spring DB事务是否比使用TransactionSynchronizationManager.isActualTransactionActive()有效?

我有一些遗留的代码,我现在试图在Spring下重用。 这段代码深深地嵌套在其他代码中,所以重新devise并不实际,在许多情况下被调用,其中只有一些是通过Spring。 我想要做的是使用Spring交易,如果已经开始了; 否则,继续使用现有的(遗留)数据库连接机制。 我们的第一个想法是使我们的遗留类成为一个bean,并使用一个注入的TransactionPlatformManager ,但似乎没有任何方法与我们的情况密切相关。 一些研究表明,Spring有一个名为TransactionSynchronizationManager的类,它有一个静态方法isActualTransactionActive() 。 我的testing表明这种方法是检测Spring事务是否有效的可靠方法: 当通过没有@Transactional注解的Spring服务调用时,它返回false 当通过@Transactional通过Spring服务调用时,它返回true 在我的传统方法称为现有的方式,它返回false 我的问题:有没有更好的方法来检测交易是否有效?

在哪里把@Transactional? 在接口规范或实现?

什么被认为是放置@Transactional注释的最佳做法? 我应该注解接口方法还是实现?

PHP中的信用卡支付网关?

我需要处理信用卡并与后端支付服务进行整合,以信贷。 互联网上的大多数解决scheme都需要一个中介,例如。 2CO , GCO , Auth.net 。 在PHP中实现信用卡支付网关有什么经验吗? 任何帮助表示赞赏。 谢谢你的时间。

匹配的通配符是严格的,但是对元素“tx:annotation-driven”没有声明。

我正在尝试configurationJSF + Spring + hibernate,而我试图运行一个testing,但是当我在application-context.xml文件中使用这个“tx:annotation-driven”时,出现这个错误: 匹配的通配符是严格的,但是对元素“tx:annotation-driven”没有声明。 这是我的application-context.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.6.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.6.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.6.xsd " xmlns:tool="http://www.springframework.org/schema/tool"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@192.168.56.101:1521:Gpsi"/> <property name="username" value="omar"/> <property name="password" value="omar"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="annotatedClasses"> <list> <value>om.mycompany.model.Course</value> <value>om.mycompany.model.Student</value> <value>om.mycompany.model.Teacher</value> </list> […]

TransactionScope和multithreading

我想知道在处理multithreading时如何以正确的方式使用TransactionScope类? 我们在主线程中创build一个新的范围,然后产生一对工作线程,我们希望这些线程参与主范围,例如,如果范围从未完成,那么每个工作者都会调用回滚。 我使用内部的ThreadStaticAttribute读取了一些有关TransactionScope的内容,这使得上述不可能/非常困难 – 有人可以validation任何一种方式吗? 如果我们以同步方式运行代码,则回滚工作,即内部事务能够参与主事务,但是如果我们切换到线程执行,则不能。 谢谢

在Spring bean中启动新的事务

我们有: @Transactional(propagation = Propagation.REQUIRED) public class MyClass implementes MyInterface { … MyInterface有一个方法: go() 。 当go()执行时,我们开始一个新的事务,当方法完成时提交/回滚 – 这很好。 现在让我们在go()中调用MyClass中的一个私有方法,该方法具有@Transactional(propagation = Propagation.REQUIRES_NEW Spring似乎忽略了REQUIRES_NEW注释并且不启动一个新的事务,我相信这是因为Spring AOP在接口级别(MyInterface)上运行,不会拦截任何对MyClass方法的调用,这是正确的吗? 有没有办法在go()事务中启动一个新的事务? 是唯一的方法来调用另一个被configuration为REQUIRES_NEW事务的Spring托pipebean? 更新 :添加,当客户端执行go()他们通过接口的引用,而不是类: @Autowired MyInterface impl; impl.go();

django中的一个计数器的primefaces增量

我试图在Django中自动递增一个简单的计数器。 我的代码如下所示: from models import Counter from django.db import transaction @transaction.commit_on_success def increment_counter(name): counter = Counter.objects.get_or_create(name = name)[0] counter.count += 1 counter.save() 如果我正确理解Django,这应该包含在一个事务中的函数,并使增量primefaces。 但这并不奏效,柜台更新中存在竞争状况。 这个代码怎么能成为线程安全的呢?

PHP的MySQL的 – 如何安全地增加MySQL整数字段?

我想用php和mysql安全地增加一个字段值。 我必须使用什么types的表格/字段? 是否有我必须使用的最低版本的MySQL? 什么是这个MySQL的安全事务的SQL代码?

事务内的Mysql事务

在一个使用mysql数据库的PHP脚本中,我最近需要在碰巧在另一个事务中的一个点上使用一个事务。 我所有的testing似乎表明这工作正常,但我无法find任何有关此用法的文档。 我想确定 – 交易内的交易有效的MySQL? 如果是这样,是否有办法找出你在嵌套事务中有多less层次? (即多less回滚才能恢复正常) 在此先感谢,布赖恩