Java 基于索引检索的结果集和常量声明的设计考虑
目前,我有十个不同的查询,它们通过JDBC处理,并封装在返回结果集的函数中。这些ResultSet对象中的每一个都由外部程序迭代,并将通过它们的索引而不是每个需求的列名进行访问。我有三种方法,我正在考虑和寻找如何处理这一问题的当前最佳实践,同时尽可能接近纯OO设计。现在,我的模式如下所示:Java 基于索引检索的结果集和常量声明的设计考虑,java,sql,Java,Sql,目前,我有十个不同的查询,它们通过JDBC处理,并封装在返回结果集的函数中。这些ResultSet对象中的每一个都由外部程序迭代,并将通过它们的索引而不是每个需求的列名进行访问。我有三种方法,我正在考虑和寻找如何处理这一问题的当前最佳实践,同时尽可能接近纯OO设计。现在,我的模式如下所示: create table Cats ( name varchar2, age number, length number, location varchar2,
create table Cats
(
name varchar2,
age number,
length number,
location varchar2,
isStray varchar2
);
我的两个问题是这样的:
public ResultSet getAllCats()
{
Select * from Cats;
}
public ResultSet getCatAgeAndName(){
Select cat.age,cat.name from Cats cat
}
现在,我考虑了通过ResultSet.getXXXindex访问这些属性的方法
详情如下:
public static final int GET_CAT_AGE_AND_NAME_AGE_INDEX = 1;
public static final int GET_CAT_AGE_AND_NAME_NAME_INDEX = 2;
或
或
第一种方法是每个查询的每个索引都有一个静态final。
第二个是每个查询的枚举。
第三个是每个查询一个类
以上哪一项或任何其他洞察都可以保持这个纯净和可维护性。我喜欢使用枚举。它们增加了灵活性。例如,可以同时提供序号值和列的名称。按名称检索而不是按序号检索应该会使事情更加健壮。对于SELECT*这样的查询也更安全。使用枚举可以更容易地关联更多信息,例如类型信息。基于表元数据生成这些类很好
我倾向于使用enum作为服务类的私有成员,该服务类在表、视图或存储过程上运行。它仅在内部用于从关系结构到结果bean的映射。关系结构不需要对外公开,因此枚举也不需要对外公开。对于同一底层结构上的多个相关查询,重用同一个枚举也很好。在您的示例中,枚举应该具有表的所有列,不同的查询将使用所有或部分列。另一个按名字比按索引更好的原因
public enum GetCatAgeAndNamePosition
{
AGE(1),
NAME(2);
}
public class GetCatAgeAndNameQuery
{
public enum Position
{
AGE(1),
NAME(2);
}
private ResultSet results;
}