我正在开发一个从Oracle数据库中获取数据的应用程序。它是一个报告应用程序,不需要插入,更新,删除。我知道我可以将数据库用户的权限设置为仅select
。但我可以在Play应用程序中配置数据库连接以使其readonly
吗?我不想做任何改变或为我的应用创建一个新用户。据我所知,Play Framework 2.1.3使用BoneCp进行数据连接。
我正在使用Java版Play!
答案 0 :(得分:0)
java.sql.Connection
有一个名为setReadOnly
的方法,它完全符合它的说法:
DB.withConnection{ implicit connection =>
connection.setReadOnly(true)
...
}
尝试执行写入查询时将抛出异常。您还可以将DB.withConnection
打包到整个应用程序中进行清理:
def withReadOnlyConnection[T](block: => T): T = {
DB.withConnection{ implicit connection =>
connection.setReadOnly(true)
block(connection)
}
}
使用它就像DB.withConnection
:
def listThings: List[Stuff] = {
withReadOnlyConnection{ implicit connection =>
SQL(...)
}
}
当然,拥有权限有限的单独数据库用户仍然会更好。
修改强>:
对于Java来说,它不会那么漂亮,但同样适用:
Connection connection = DB.getConnection();
connection.setReadOnly(true);
// Do something with this connection.