Jdbc 如何在同一应用程序中使用不同的事务隔离级别?

Jdbc 如何在同一应用程序中使用不同的事务隔离级别?,jdbc,transaction-isolation,Jdbc,Transaction Isolation,是否可以在同一应用程序中使用不同的事务隔离级别?例如,我想对简单的客户端请求使用READ_COMMITTED,而对更复杂的请求使用READ_REPEATABLE。我花了数周的时间试图弄清楚这一点,所以我将我学到的知识记录下来。欢迎提供更多答案 虽然在技术上可以使用更改事务隔离级别,但我强烈建议不要这样做 必须在开始事务之前设置事务隔离。否则会导致“实现定义”行为 为了检测适当的事务隔离,您必须找出您调用的任何方法(以及它们调用的任何方法)所需的事务隔离 这很快就会演变成一场维护噩梦,在这里,您

是否可以在同一应用程序中使用不同的事务隔离级别?例如,我想对简单的客户端请求使用READ_COMMITTED,而对更复杂的请求使用READ_REPEATABLE。

我花了数周的时间试图弄清楚这一点,所以我将我学到的知识记录下来。欢迎提供更多答案

虽然在技术上可以使用更改事务隔离级别,但我强烈建议不要这样做

  • 必须在开始事务之前设置事务隔离。否则会导致“实现定义”行为
  • 为了检测适当的事务隔离,您必须找出您调用的任何方法(以及它们调用的任何方法)所需的事务隔离
  • 这很快就会演变成一场维护噩梦,在这里,您很难跟踪每个方法的正确隔离级别
  • 如果您试图在运行时以编程方式查询正确的隔离级别(通过询问您的依赖项需要什么样的隔离级别),您将得到非常难看的代码,并且再次成为维护的噩梦
相反,我建议咬紧牙关,在整个应用程序中选择一个事务隔离级别。从安全的地方开始,慢慢移动到更高的隔离级别