Java 通过数据源为H2设置事务隔离级别

Java 通过数据源为H2设置事务隔离级别,java,postgresql,transactions,h2,Java,Postgresql,Transactions,H2,由于并发更新的问题,我正在为我的应用程序尝试不同的隔离级别。我通过获取数据库连接的数据源设置隔离级别 BasicDataSource ds = new BasicDataSource(); ds.setDefaultTransactionIsolation( Connection.TRANSACTION_REPEATABLE_READ) /* more config ... */ ds.getConnection() 对于postgres 9.3数据库,行上的并发更新会触发错误,根据 错误

由于并发更新的问题,我正在为我的应用程序尝试不同的隔离级别。我通过获取数据库连接的数据源设置隔离级别

BasicDataSource ds = new BasicDataSource();
ds.setDefaultTransactionIsolation(
  Connection.TRANSACTION_REPEATABLE_READ)
/* more config ... */
ds.getConnection()
对于postgres 9.3数据库,行上的并发更新会触发错误,根据
错误:由于事务之间的读/写依赖关系,无法序列化访问
当将隔离级别设置为
Connection.TRANSACTION\u READ\u COMMITTED

试图用内存中的H2数据库重现这种行为,隔离级别似乎不会改变我的单元测试的结果。即使使用和/或
Connection.TRANSACTION\u READ\u UNCOMMITTED
设置数据库url完全禁用隔离,我在并发更新
org.h2.jdbc.jdbcsqleexception:concurrent update in table“MyTable”:另一个事务已更新或删除同一行时也会出错


我的问题是:如何配置H2连接以使用特定的隔离级别,对锁定模式或连接所做的任何更改都不能帮助我摆脱JdbcSQLException。

H2不应该在多线程环境中运行。您可以将其用于开发目的,等等。但是在线程化、高负载环境中,您应该使用一个功能齐全的DBMS实例。

hmm,“您不能使用H2来实现这一点”并不是我所希望的答案:)