0
我們在Hibernate3.6-Spring 3.1中有一個應用程序。服務層應該知道存儲過程和參數嗎?
我有通用的DAO實現了一套這樣的,(http://www.ibm.com/developerworks/java/library/j-genericdao/index.html)
public abstract class GenericDaoImpl<T, ID extends Serializable> implements GenericDao<T, ID>
{
public int executeSP(final String SP_NAME, Map<String, Object> params)
{
SQLQuery sq = getSession().createSQLQuery(SP_NAME);
sq.setProperties(params);
return sq.executeUpdate();
}
}
而這個服務實現
@Transactional
public class PejlAnalysisServiceImpl implements PejlAnalysisService, InitializingBean
{
private CisternDao cisternDao;
private PejlDataDao pejlDataDao;
private GenericDao genericDao; // <-- THIS?
private void test()
{
Map<String, Object> params = new HashMap<String, Object>();
params.put("PARAM1",100); //AND THIS
genericDao.executeSP("MY_STORED_PROCEDURE", params); //And THIS
}
}
這真的是這樣做的正確方法?
P.S.存儲過程處理不同的數據庫表,因此它們不屬於特定的DAO impl。
它們是必不可少的,Ryan實際上幾乎是應用程序的核心,儘管只有5個SP。很多計算髮生。我不知道他們爲什麼決定在存儲過程中做到這一點。所以是的。我被困住了。 –
所以是的,我認爲這聽起來像服務層SP的知識是合適的,因爲他們是應用程序的主要部分。你可能會考慮的一件事是將它們從DAO層次結構中分離出來,因爲就像你說的,它們不屬於任何一種DAO。給他們自己的房子可能會更好,比如「StoredProcedureManager」或者其他類似的東西。 –
謝謝瑞恩。我現在實現了我自己的StoredProcedureManager來處理多個存儲過程。 :-) –