У нас есть приложение в 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.