Java 组织JDBC项目

Java 组织JDBC项目,java,jakarta-ee,Java,Jakarta Ee,我有一些非常长的SQL语句需要通过JDBC运行。我想知道组织它们的最佳程序是什么?我应该创建一个单独的类,将它们定义为变量,并从我的主应用程序类引用这些类变量吗 或者我应该把它们放到应用程序类中,然后处理它的难读性 任何帮助都会很好。我能想到的将它们放在一起的一个好处是,如果您更改数据模型,就很容易找到查询所在的位置并找到受影响的查询 如果您有少量查询,我不会太担心,只需格式化它们,使它们易于阅读(不管您使用哪种方法都可以!) 如果您想使用字符串变量路由类,并且如果您的查询数量很大(>100),

我有一些非常长的SQL语句需要通过JDBC运行。我想知道组织它们的最佳程序是什么?我应该创建一个单独的类,将它们定义为变量,并从我的主应用程序类引用这些类变量吗

或者我应该把它们放到应用程序类中,然后处理它的难读性


任何帮助都会很好。

我能想到的将它们放在一起的一个好处是,如果您更改数据模型,就很容易找到查询所在的位置并找到受影响的查询

如果您有少量查询,我不会太担心,只需格式化它们,使它们易于阅读(不管您使用哪种方法都可以!)


如果您想使用字符串变量路由类,并且如果您的查询数量很大(>100),那么我会将它们分组到几个不同的类中。

可以将脚本存储在从应用程序读取的单独文件中。如果脚本是SQL,那么为它们提供一个单独的文件将使它们能够直接运行以进行调试


如果您有大型查询语句,还可以定义视图。

我不喜欢使用单独的文件。我会把它们放在使用它们的文件中,因为我不想去别的地方仅仅为了弄清楚数据库在做什么

我会使它们成为静态的最终字符串,这样我就不会每次都重复创建它们。如果您正在连接或使用StringBuilder,则可能是做错了

我肯定会在任何地方使用事先准备好的声明。您将不会受到SQL注入的影响,您的代码也将因此变得更好

使用数据访问对象模式为对象提供CRUD接口:

public interface FooDao<K, T>
{
   T find(Long id);
   List<T> find();
   K save(T instance);
   void delete(T instance);   
}
公共接口FooDao { 找不到(长id); 列表查找(); K保存(T实例); 无效删除(T实例); }
我认为最简单的方法是要么从文件中读取SQL(如果有很多),要么制作一堆准备好的语句,只是不包装它们