Как управлять подключениями БД только для чтения на уровне приложения


Мы используем Java / Spring / Ibatis / MySql. Есть ли способ с помощью этих технологий управлять подключениями только для чтения на уровне приложения? Я ищу, чтобы добавить дополнительный слой защиты поверх наличия только для чтения пользователей MySql. Было бы неплохо, если бы BasicDataSource или SqlMapClientTemplate предоставляли конфигурацию для соединений только для чтения. В противном случае, кажется, что я оставлен только пользователям чтения MySql и принуждаю интерфейсы только с методами чтения.

Спасибо

3 3

3 ответа:

Например соединение#CreateStatement может принимать параметры

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

BasicDataSource имеет свойство defaultReadOnly свойство, чтобы установить его как readonly. Вы можете использовать его.

<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

Попробуйте получить лежащий в основе java.sql.Connection объект и setReadOnly(true).