Должен ли уровень обслуживания знать о хранимых процедурах и параметрах? - PullRequest
0 голосов
/ 17 октября 2011

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

1 Ответ

0 голосов
/ 17 октября 2011

Это действительно зависит от вашего дизайна. В одном меньшем проекте, который я написал, у меня был объект StoredProcedure, который использовали другие компоненты, потому что единственная хранимая процедура была единственным способом хранения данных. Во-первых, я бы рекомендовал избегать хранимых процедур, но если вы застряли с ними, вы должны решить, насколько они интегрированы в ваш дизайн. Являются ли они важной частью бизнес-логики или просто деталями реализации вашего уровня персистентности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...