是否有支持XA分布式事务的内存中JDBC数据库?

问题描述 投票:2回答:2

我想使用内存数据库来测试我的应用程序,但是它需要支持XA distributed transactions。我对内存数据库的第一个想法是HSQLDB,但似乎不支持XA。有吗?

java jdbc transactions
2个回答
3
投票

看起来像H2支持此。


0
投票

H2数据库HSQLDB都支持它,即使在2019年也找不到任何其他Java嵌入式数据库。但是在这两个数据库中都没有正确实现:交易一旦客户端断开连接。根据X / Open规范,当数据库准备事务时,其数据应被永久存储,并且必须可供以后提交。

在H2中,XA代码is unmaintained

如果您希望测试使用支持XA的数据库,则可以通过TestContainers项目使用Postgres:

@ClassRule
public static PostgreSQLContainer container = new PostgreSQLContainer<>("postgres:12.1")
        .withCommand("postgres -c max_prepared_transactions=10");

然后创建一个像这样的数据源:

PGXADataSource dataSource = new PGXADataSource();
dataSource.setURL(container.getJdbcUrl());
dataSource.setUser(container.getUsername());
dataSource.setPassword(container.getPassword());
dataSource.setDatabaseName(container.getDatabaseName());
© www.soinside.com 2019 - 2024. All rights reserved.