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