8

我正在使用JdbcTemplate带有 DAO 模式的 Spring 来访问数据库。我不是手动创建数据库表,而是寻找一种在 DAO 层中生成表的方法。我知道我可以使用JdbcTemplate来执行语句,我只是在寻找合适的地方来执行它。

有没有最好的做法?

4

3 回答 3

11

您可以使用execute(String) 方法

public void execute(String sql) throws DataAccessException

发出单个 SQL 执行,通常是 DDL 语句。
指定者:在接口JdbcOperations中执行

参数: sql - 要执行的静态 SQL

抛出:DataAccessException - 如果有任何问题

然而,正如 beny23 提到的那样,我会怀疑是否需要在实时应用程序中以编程方式执行此操作。

于 2010-01-20T14:15:51.987 回答
1

使用.update()中可用的方法(Simple)JdbcOperations,它们返回的数字是受影响的行数。它们应该专门用于INSERTandUPDATE语句。

于 2010-01-20T13:29:33.657 回答
1

有点题外话:

您是否绝对需要从代码中执行 DDL 命令?事实上,我确实认为将 db admin 和 db usage 分开是个好主意。我们这里的 Oracle 数据库安全设置实际上是这样设置的,以便使用不同的数据库用户 (DB_OWNER) 设置表,而不是由 DB_USER 运行运行 SELECT、INSERT、DELETE 的用户。

这可以防止意外删除表或修改模式,还允许设置 DB_USER,以便只授予绝对必要的权限,这增加了一层安全性。

我想这取决于您的服务/应用程序的性质,但请考虑在代码中创建表的好处(以及 DDL 代码中可能存在的错误是否会意外破坏生产数据)。

于 2010-01-20T13:35:08.400 回答