我的数据访问类通常有一个名为loadDataToEntity或类似的方法。此方法将结果集作为实例并填充传递给客户端使用的实体类。检索数据库数据 - 常规检索方法?
这是不错的,因为所有使用存储过程来检索数据的方法可以直接传递结果集到loadDataToEntity方法,并取回一个实体。
所以这是减少代码的好办法,但我经常听到,你应该获取尽可能少的列成为可能。要使用我的通用方法,所有存储过程都需要获取loadDataToEntity()所需的所有列。另外,当列被添加到表中并且被存储过程检索时,所有其他存储过程需要被更改并且还检索该列。
我不知道是否有更好的方法来实现两者的一般方法,并取回有时取决于存储过程的列数不同?
public Entity getById(int id)
{
ResultSet rs;
//call stored procedure A and stuff
return loadDataToEntity(rs);
}
public Entity getByName(String name)
{
ResultSet rs;
//call stored procedure B and stuff
return loadDataToEntity(rs);
}
public Entity loadDataToEntity(ResultSet rs)
{
// fill and return entity here
}
是的,第二种方法可能会更适合我,因为我几乎总是使用规范化的数据库。 示例:表用户 queryA:获取检查登录验证所需的用户信息。需要列a,b和c。 queryB:获取下订单所需的用户信息。需要列a,c和d。 在这种情况下,如果有一个在表中只有4列可能是最好有在一个实体对象加载这些4列的一般方法和既有查询A和B检索所有4列。 – KTrum 2010-11-01 12:16:52
@Karl - 在不知道应用程序的确切细节的情况下很难给出建议,但我总是建议仅针对需要的列进行查询,而不是运行“select *”。这使得您更容易对模式进行更改,因为您会“快速失败”。它还允许您在使用SQL分析工具时更容易地计算出发生了什么,因为您可以更轻松地建立行为模式。 – Adamski 2010-11-01 16:11:08