0

私は Derby データベースを使用しており、同時に DB オブジェクトを作成しようとしています。

ご存知のように、デフォルトの分離レベルは TRANSACTION_READ_COMMITTED です。

しかし、DB でのファントム読み取りも許可したくないため、分離レベルを TRANSACTION_SERIALIZABLE に設定したいと考えています。

私がするのは、このコードのビットだけです。

if(jdbcTemplate.getDataSource().getConnection().getTransactionIsolation() == Connection.TRANSACTION_READ_COMMITTED) {
                logger.info("The connection isolation is already TRANSACTION_READ_COMMITTED");
            }
            else {
                logger.info("Please set the connection isolation to TRANSACTION_READ_COMMITTED");
            }

            jdbcTemplate.getDataSource().getConnection().setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
            if(jdbcTemplate.getDataSource().getConnection().getTransactionIsolation() == Connection.TRANSACTION_SERIALIZABLE) {
                logger.info("The connection isolation is now TRANSACTION_SERIALIZABLE");
            }

予想どおり、「The connection isolation is already TRANSACTION_READ_COMMITTED」というログが表示されますが、驚くべきことに「The connection isolation is now TRANSACTION_SERIALIZABLE」というログは表示されません。

また、分離レベルがシリアライズ可能に設定されていないことを確認する例外が発生することを期待していました。

4

1 に答える 1