如何在应用程序级别管理只读数据库连接

时间:2011-06-02 21:39:44

标签: java mysql apache spring ibatis

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

由于

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

例如Connection#CreateStatement可以带参数

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

答案 2 :(得分:1)

尝试获取基础java.sql.Connection对象和setReadOnly(true)