我的數據訪問類通常有一個名爲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