使 LocalSessionFactoryBean 对数据库连接强制只读

Make LocalSessionFactoryBean enforce read only on db connections

使用 spring/hibernate/C3P0 ComboPooledDataSource。我正在使用 spring 2.5、hibernate 3.3 和最新的 C3P0 进行遗留项目。

我正在使用 LocalSessionFactoryBean 实现。

我使用 spring TransactionInterceptor 全局设置事务属性。

我正在添加第二个复制数据库,仅用于报告查询。这将是一个只读数据库,我想将所有连接设置为只读。

我试图创建 LocalSessionFactoryBean 的第二个实例,它具有引用辅助数据库的数据源。
但是,我想做的是将所有这些交易设置为只读。

我希望在 ComboPooledDataSource 数据源中可能有一种方法可以做到这一点。例如 apache commons BasicDataSource 有一个 readOnly 设置。 C3P0 没有。

接下来,我想可能有一种方法可以在LocalSessionFactoryBean 中实现。但没有运气找到那个。有什么想法吗?

创建一个只有 read-only 访问权限的数据库帐户。那是保证用户不能写的最好方法。为该帐户创建第二个数据源并使用它。

尝试使用 Spring/Hibernate 执行此操作不是正确的方法。如果您使用正确的工具来完成工作,它将更加简洁、易于理解和维护。