我有一些非常长的SQL语句需要通过JDBC运行。我想知道组织它们的最佳程序是什么?我应该创建一个单独的类,将它们定义为变量,并从我的主应用程序类中引用这些类变量吗?
或者我应该将它们放入应用程序类并处理难以阅读的内容?
任何帮助都会很棒。
答案 0 :(得分:2)
我不喜欢单独文件的想法。我把它们放在他们使用的文件中,因为我不想去其他地方只是为了弄清楚数据库在做什么。
我会让它们成为静态的最终字符串,所以我不会每次都重新创建它们。如果您正在连接或使用StringBuilder,那么您可能做错了。
我一定会到处使用PreparedStatements。你可以安全地使用SQL注入,你的代码也会更好。
使用数据访问对象模式为对象建立CRUD接口:
public interface FooDao<K, T>
{
T find(Long id);
List<T> find();
K save(T instance);
void delete(T instance);
}
答案 1 :(得分:0)
我能想到的将它们保持在一起的一个好处是,如果您更改数据模型,则很容易转到查询所在的位置并找到受影响的查询。
如果你有少量的查询,我不会太担心,只需格式化它们就可以轻松读取(无论你使用哪种方法都可以!)
如果你想使用class-with-string-variables路由,如果你的查询数量很大(> 100),那么我会把它们分成几个不同的类。
答案 2 :(得分:0)
可以将脚本存储在您从应用程序中读取的单独文件中。如果脚本是SQL,那么为它们提供单独的文件将使它们可以直接运行以进行调试。
如果您有大型查询语句,还可以定义视图。
答案 3 :(得分:0)
我认为最简单的方法是从文件中读取SQL(如果有很多),或者制作一堆预处理语句而不包装它们。