如何在Hibernate中执行Savepoint和rollback?

时间:2014-04-08 07:47:33

标签: java hibernate rollback testcase savepoints

我正在测试我的类,所以我插入了很多数据来测试我的代码。

所以我想在DB中制作一些savepoint and rollback的机制。

我使用postgresql作为DB服务器。

以下是我的测试代码:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("file:src/main/webapp/WEB-INF/ls-dispatcher-servlet.xml")
public class AddBindingProcessorTest extends IntegrationTestBase {

    @Autowired
    private AddBindingProcessor processor;


    public AddBindingProcessorTest(){

    }

     @Before
    public void setUp() throws Exception {

    }

    @After
    public void tearDown() throws Exception {

    }

    @Test
    public void add() throws Exception {
        AddBinding command;
        command = new AddBinding();
        command.setId(50l);
        command.setBindingName("bindingtest1");
        command.setBindingPrice((double)253);

        BindingTypeResponse response = (BindingTypeResponse)processRequest(command);
        System.out.println("from addbindingprocessor test "+response.getBindingName());
    }
}

这里我通过命令对象设置值并传递给ProcessRequest()方法,该方法将使用hibernate在DB中存储数据。 我仍然必须在我的assert方法中写testProcess()来检查数据是否正确?

所以我的问题是,当我在setUp()方法中启动此事务时,应创建一个保存点,然后执行testProcess()方法并assert检查它们是否正确的数据或者不是然后在tearDown()方法中我想回滚到setUp()方法中设置的保存点。

那怎么办?如果任何人都可以指导我将要使用的内容以及如何继续前进,那么我将学习那些东西并自行完成。

我只是想要指导我必须使用的内容和位置? 谢谢大家。

1 个答案:

答案 0 :(得分:2)

如果我找对你,你可以使用

@TransactionConfiguration(defaultRollback = true)
@ContextConfiguration注释下面的

注释。 这将在每次运行后回滚测试中的更改。

user3145373指出,属性transactionManager =" context bean transaction manager"在@TransactionConfiguration中也需要设置。

它是弹簧测试库的一部分。