Открыть соединение JdbcTemplate в режиме только для чтения? - PullRequest
4 голосов
/ 18 мая 2010

возможно ли открыть соединение JdbcTemplate в режиме только для чтения, чтобы я не смог внести никаких изменений в базовый источник данных?

Ответы [ 3 ]

2 голосов
/ 10 сентября 2010

Используйте Spring транзакции и объявите транзакцию только для чтения.Смотри http://static.springsource.org/spring/docs/2.5.6/reference/transaction.html#transaction-declarative-annotations

1 голос
/ 31 октября 2017

Я использую вспомогательный метод, подобный этому

private void setConnectionReadOnly(boolean readOnly) {
    try {
        jdbcTemplate.getDataSource().getConnection().setReadOnly(readOnly);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
0 голосов
/ 18 мая 2010

Я не верю, что API соединения JDBC позволяет это.

У вас есть два варианта:

  1. ПРЕДОСТАВЛЯТЬ соответствующие разрешения на уровень базы данных, чтобы разрешить только SELECT операции;
  2. Использование Spring AOP и Security для перехвата вызовов для записи операций в DAO и запрета их для определенных ролей.

Второй вариант, очевидно, более гибкий и в духе естественной идиомы Весны.

...