【问题标题】:How to manage read-only DB connections at an application level如何在应用程序级别管理只读数据库连接
【发布时间】:2011-06-02 21:39:44
【问题描述】:

我们正在使用 Java/Spring/Ibatis/MySql。这些技术有没有办法在应用程序级别管理只读连接。我希望在拥有只读 MySql 用户的基础上增加一层额外的保护。如果 BasicDataSource 或 SqlMapClientTemplate 为只读连接提供配置,那就太好了。否则,我似乎只能使用 MySql 读取用户并使用仅读取方法执行接口。

谢谢

【问题讨论】:

    标签: java mysql apache spring ibatis


    【解决方案1】:

    例如Connection#CreateStatement可以带参数

    statement = connection.createStatement
    (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    

    【讨论】:

      【解决方案2】:

      BasicDataSource 有一个名为 defaultReadOnly 的属性将其设置为只读。你可以使用它。

      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
          <property name="driverClassName" value="org.postgresql.Driver"/>
          <property name="url" value="jdbc:postgresql://${db.host}:5432/${db.name}"/>
          <property name="username" value="${db.username}"/>
          <property name="password" value="${db.password}"/>
          <property name="defaultReadOnly" value="true"/>
      </bean>
      

      http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/BasicDataSource.html

      【讨论】:

        【解决方案3】:

        尝试获取底层的java.sql.Connection对象和setReadOnly(true)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多