【发布时间】:2011-02-04 18:20:33
【问题描述】:
我正在编写一个使用 JdbcTemplate 并执行用户查询的程序。有没有办法通过 Spring JDBC 包将用户查询限制为 SELECT 语句?我不希望用户执行任何更新底层数据库的查询。
谢谢,
公里
【问题讨论】:
标签: java spring jdbc spring-jdbc
我正在编写一个使用 JdbcTemplate 并执行用户查询的程序。有没有办法通过 Spring JDBC 包将用户查询限制为 SELECT 语句?我不希望用户执行任何更新底层数据库的查询。
谢谢,
公里
【问题讨论】:
标签: java spring jdbc spring-jdbc
Spring JDBC 无法自动为您执行此操作,您必须编写自己的适配器并确保您的所有代码都调用该适配器。
您是否考虑过使用数据库权限来实现您想要的?这取决于您希望您的安全性有多精细,但创建一个“应用程序”数据库用户是一个好主意,该用户是与数据库所有者帐户分开的帐户。然后根据每个表授予适当的权限。
【讨论】:
Spring 安全性就是为此而设计的。它有一个用于处理访问的预定义表。
【讨论】:
如果您可以选择,请考虑使用 JPA(Java Persistence API);查询对象有单独的 getResultList 和 getSingleResult -方法,如果查询是 DELETE 或 UPDATE 则抛出异常(删除和更新仅通过 executeUpdate)。
【讨论】: