現在、Teeda + DBFluteな環境で、Webアプリを製作中なわけですが、DBを更新する処理とかのバッチ作成する時って、どこにソースを配置すべきなんでしょう。

考えた末、、Webアプリと混在する環境に置く事に。

teeda-batch

javaのソースディレクトリにbatchっていうのを作って、そこにmain関数を書いてしまう。
そして、ソースはこんな感じで。

JAVA:
  1. import org.seasar.framework.container.S2Container;
  2. import org.seasar.framework.container.factory.S2ContainerFactory;
  3. import sample.dbflute.exbhv.MemberBhv;
  4. import sample.dbflute.exentity.Member;
  5.  
  6. public class Main {
  7.     private static final String S2PATH = "dbflute.dicon";
  8.    
  9.     public static void main(String[] args) {
  10.         S2Container container = S2ContainerFactory.create(S2PATH);
  11.         container.init();
  12.         try {
  13.             MemberBhv memberBhv
  14.             = (memberBhv)container.getComponent(MemberBhv.class);
  15.             final Member member = new Member();
  16.             member.setId(1);
  17.             member.setName("name");
  18.             memberBhv.insert(member);
  19.  
  20.         } catch (Exception e) {
  21.             e.printStackTrace();
  22.         } finally {
  23.             container.destroy();
  24.         }
  25.     }
  26. }

S2Containerを呼び出し、Behaviorを作成。Behaviorを通して簡単なinsert処理を。
これで完了。

いちおう、Container経由でWebで作ったロジックもちゃんと呼べたりもしますし、DBFluteの便利なBehaviorやConditionBeanも呼び出せるので、これでええかなと。

しかし、調べてみるといろいろ意見があったりしてます。
https://ml.seasar.org/archives/seasar-user/2007-August/011996.html

最適な解は何なんでしょう。

関連する記事

blogranking←ぽちっとな

<<
>>