我正在使用JdbcTemplate
带有 DAO 模式的 Spring 来访问数据库。我不是手动创建数据库表,而是寻找一种在 DAO 层中生成表的方法。我知道我可以使用JdbcTemplate
来执行语句,我只是在寻找合适的地方来执行它。
有没有最好的做法?
您可以使用execute(String) 方法:
public void execute(String sql) throws DataAccessException
发出单个 SQL 执行,通常是 DDL 语句。
指定者:在接口JdbcOperations中执行参数: sql - 要执行的静态 SQL
抛出:DataAccessException - 如果有任何问题
然而,正如 beny23 提到的那样,我会怀疑是否需要在实时应用程序中以编程方式执行此操作。
使用.update()
中可用的方法(Simple)JdbcOperations
,它们返回的数字是受影响的行数。它们应该专门用于INSERT
andUPDATE
语句。
有点题外话:
您是否绝对需要从代码中执行 DDL 命令?事实上,我确实认为将 db admin 和 db usage 分开是个好主意。我们这里的 Oracle 数据库安全设置实际上是这样设置的,以便使用不同的数据库用户 (DB_OWNER) 设置表,而不是由 DB_USER 运行运行 SELECT、INSERT、DELETE 的用户。
这可以防止意外删除表或修改模式,还允许设置 DB_USER,以便只授予绝对必要的权限,这增加了一层安全性。
我想这取决于您的服务/应用程序的性质,但请考虑在代码中创建表的好处(以及 DDL 代码中可能存在的错误是否会意外破坏生产数据)。