1
我想将批处理和连接逻辑封装到自己的类中,如下面的代码所示,以强制该连接正确关闭并使应用程序逻辑更加简单。提取准备好的语句逻辑的最干净的解决方案
public class SQLHelper {
public static void insertBatched(List<String> insertStatements) {
// do connection and batching logic here
}
}
public class Application {
public static void doWork() {
// create insert statements here
SQLHelper.insertBatched(statements);
}
}
问题是,构建插入语句作为字符串是不好的做法,应该用准备好的语句替换。在使用预准备语句时,我需要设置参数以及在同一个对象上进行批处理,因此可以在两个类之间共享。我到目前为止想到的解决方案:
- 从SQLHelper获取连接并使用它来准备语句。此解决方案的问题在于类之间的传递连接很容易出错,因为无法确保正确释放资源
- 将字符串传递给SQLHelper并获取准备好的语句。这一问题是应用程序有一批在这种情况下,插入语句,然后再次关闭连接
这两种解决方案都有缺点,所以我想问问什么是最干净的设计解决方案,以获得最大的封装,同时还关于适当的资源再分配有安全性。
阅读有关连接池的信息。这比打开和关闭连接好得多。 –
@SajithSilva连接池(至少我知道的)相当透明,所以在合并/非合并版本之间的应用程序代码没有区别。 – biziclop
使用Spring的JdbcTemplate(或重新创建它):http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#jdbc –