[Seasar-user:17064] S2Tx 処理結果を登録したい
溝口
[E-MAIL ADDRESS DELETED]
2009年 3月 17日 (火) 08:30:52 JST
いつもお世話になっています。
環境
S2remotingで、サーバーでWARM deployのサービスを起動して
います。customizer.diconでserviceにj2ee.requiredTxを設定して
トランザクションをかけています。
データベースアクセスにはS2Daoを使用しています。
今回、新たに発生した処理で、
ある複数件のレコードをデータベースへ登録するという物があり、
登録結果(エラーの場合理由)もデータベースに保存するという
物があります。
下のような感じの処理が書いてあります。
public class HogeServiceImpl implements HogeService{
public LogDao logDao;
public TargetDao targetDao;
public TargetDxo targetDxo;
public void exec(List<HogeArg> argList){
Integer errorRowNumber = null;
Integer errorId = null;
for(int i=0;i<argList.size();i++){
HogeArg hogeArg = argList.get(i);
try{
validateRecord(hogeArg);
targetDao.insert(targetDxo.convert(hogeArg));
}catch(ValidateException ve){
errorId = ve.getErrorId;
errorRowNumber = i;
//ここどうする?
break;
}
}
LogEntity logEntity = new LogEntity();
log.setRowCount(argList.size());
log.setErrorRowNumber(errorRowNumber);
log.setResult(errorId);
logDao.insert(log);
}
}
やりたいこと、validateRecordでValidateExceptionが発生した場合、
targetテーブルにインサートしたデータを消したい。
ログテーブルに書かれるデータは残したい。
このような場合、どの様にサービスを組むべきなのかご教示欲しく
mlに縋ってみました。
クライアントから見ると、Excelを取り込み、フォーマット形式
チェックを行い、ArgListに各Excelのcellの値を詰め、サーバーに
送る。
サーバーでは、argListと処理結果を登録する。サーバー側で
エラーがあった場合、処理結果のみを登録する。
クライアントで処理結果照会画面で、処理結果を照会する。
Seasar-user メーリングリストの案内