Hibernate3.6-Spring 3.1にはアプリケーションがあります。サービス層はストアドプロシージャとパラメータについて知っていますか?
私は
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();
}
}
(http://www.ibm.com/developerworks/java/library/j-genericdao/index.html)、このような私のジェネリックDAOのIMPLを持っており、このサービス実装
@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に属しません。
これらは5つのSPしかないにもかかわらず、実際にはアプリケーションのコアである、Ryanにとって不可欠です。多くの計算が行われています。そして私はなぜ彼らがストアドプロシージャでそれをすることを決めたのか分かりません。あ、はい。私はそれに立ち往生しています。 –
だから、サービス層のSPの知識がアプリの主要な部分であるため適切であるように思えるだろう。あなたが言っているように、彼らはDAOのいずれの種類にも属していないので、あなたが考慮する1つのことはあなたのDAO階層からそれらを分離することです。 「StoredProcedureManager」やそのような行に沿ったもののような、自分の家を与えるほうが良いかもしれません。 –
ありがとうございました。複数のストアドプロシージャを処理するために私自身のStoredProcedureManagerを実装しました。 :-) –