LOCK TABLE和try-catch块

时间:2014-05-08 07:22:18

标签: java mysql locking spring-jdbc

在使用@Transactional注释的方法中,是否应在LOCK TABLE块内或之前执行try语句?

选项1:

jdbcTemplate.execute(SQL_LOCK);

try {
    //Some work
} finally {
    jdbcTemplate.execute(SQL_UNLOCK);
}

选项2:

try {
    jdbcTemplate.execute(SQL_LOCK);

    //Some work
} finally {
    jdbcTemplate.execute(SQL_UNLOCK);
}

谢谢, 迈克尔

2 个答案:

答案 0 :(得分:1)

选项2似乎更可取,因为即使在执行SQL_UNLOCK期间抛出异常,它也可以保证执行SQL_LOCK语句。

答案 1 :(得分:1)

选择选项2 finally sql解锁是否在try-catch阻止中引发异常。

如果选项1 ,如果try-catch阻止SQL LOCK之前引发异常,则程序不保证输入finally阻止解锁它。