5

是否可以以只读模式打开 JdbcTemplate 连接,这样我就无法对底层数据源进行任何更改?

4

3 回答 3

4

使用 Spring Transactions 并将事务声明为只读。见http://static.springsource.org/spring/docs/2.5.6/reference/transaction.html#transaction-declarative-annotations

于 2010-09-09T20:38:35.583 回答
2

我使用这样的辅助方法

private void setConnectionReadOnly(boolean readOnly) {
    try {
        jdbcTemplate.getDataSource().getConnection().setReadOnly(readOnly);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
于 2017-10-31T04:18:11.957 回答
0

我不相信 JDBC 连接 API 允许这样做。

你有两个选择:

  1. 在数据库级别授予适当的权限以仅允许 SELECT 操作;
  2. 使用 Spring AOP 和 Security 拦截对 DAO 写入操作的调用,并禁止某些角色执行这些操作。

第二种选择显然更加灵活,并且符合 Spring 的自然习语精神。

于 2010-05-18T12:03:02.410 回答