Bjö*_*lex 1 java sql design-patterns jdbc
我有一个Java应用程序,它使用JDBC将数据从旧文件格式加载到SQLite数据库中。如果指定的数据库文件不存在,则应创建一个新的数据库文件。当前,数据库的架构已在应用程序中进行了硬编码。我宁愿将它作为SQL脚本保存在单独的文件中,但是显然没有简单的方法可以通过JDBC执行SQL脚本。还有其他方法或模式可以实现这样的目标吗?
您的句子“现在有一种通过JDBC执行SQL脚本的简便方法”使我有些困惑,但是我认为您是在说“ 没有简便的方法”。:)
根据其他人的说法,是的……完美的世界场景是使用像Hibernate这样的ORM工具,但我也了解一个事实,当您在工作中处理遗留的东西时,您的团队可能不想花太多钱时间重构该项目。
我同意您应该将数据库架构重构为一个单独的文件。您实际上可以使用JDBC执行SQL脚本。当我运行某些测试用例时,我总是这样做。
这是我的方法。我使用SQL Server数据库。因此,您需要调整代码以适合您的需求。
String ddl = ... // load your SQL script file into this string
String delimiter = "GO"; // in my case, SQL Server uses GO as delimiter, you use whatever you want here.
private void executeDDL(String ddl, String delimiter) {
Connection con = null;
try {
con = ... // get the connection
// enable transaction
con.setAutoCommit(false);
Statement statement = con.createStatement();
// for every DDL statement, execute it
for (String sql : ddl.split(delimiter)) {
if (StringUtils.isNotBlank(sql)) {
statement.executeUpdate(sql);
}
}
statement.close();
con.commit();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
con.close();
}
catch (Exception ignored) {
}
}
}
Run Code Online (Sandbox Code Playgroud)