Spring JDBC:如何创建表?

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

有最好的做法吗?

稍微偏离主题:

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

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

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

您可以使用execute(String)方法 :

 public void execute(String sql) throws DataAccessException 

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

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

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

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

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