ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Seasarコミュの(質問)UpdateでSQLを入れる際に、beignとかcomitは入れらますか?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
こんばんわ、カエサルと申します。

現在、ひがやすをさんのSersar2入門を見ながらサイトを構築しております。

データを以下のようにしてデータベースにアップデートしようとしているのですが、下記のut.beginの箇所でエラーになります。
ちなみにut.begin,ut.rollback,ut.comitを抜くとちゃんとアップデートされます。

この場合はビギントランスとかは出来ないのでしょうか?

宜しくお願いします。

sampleAction.jsp
========================================================

public class SampleAction{

@ActionForm
@Resource
protected SampleForm sampleForm;

// 変更ボタンが押された場合
  @Execute(input = "test.jsp")
  public String edit()
  {
//SQLの作成
sql = " update TEST_T set TEST_NM='テスト' where TEST_C='123'";

    SingletonS2ContainerFactory.init();

    try
    {
  JdbcManager jdbcManager = SingletonS2Container.getComponent(JdbcManager.class);

      UserTransaction ut = SingletonS2Container.getComponent(UserTransaction.class);

 ut.begin();// ここですぐに例外に飛んでしまいます

 // データベースの更新する
jdbcManager.updateBySql(sql).execute();

ut.commit();
  }
  catch(Exception e)
  {
ut.rollback();
System.out.println(e.getMessage());
  }
  finally
  {
SingletonS2ContainerFactory.destroy();
  }
return "finish.jsp";
}


========================================================

コメント(4)

ActionのメソッドでS2Containerを初期化しちゃだめですよ。
scaffoldの章を参考にするとSAStrutsからS2JDBCを使う方法がわかると思います。
基本的に、ActionからS2Containerは触らないものだと覚えておいてください。
必要なクラスは、フィールドを宣言しておけば、自動的に設定(DI)されます。
>ひがやすを さん

実際にはアクションクラスのindexメソッドでSingletonS2ContainerFactory.init()をしていますが、本来はどこですればよろしいのでしょうか?
※例では分かりやすくしようと思ってeditメソッドで行いました。

現在はserviceを使わずに、
jdbcManager.updateBySql(sql).execute();
みたいにSQLを直接書いていますが、この方法でも問題はないでしょうか?

また、この際にはビギントランスやコミットトランスをしなくても、データは安全に更新されるのでしょうか?

すいません、まだまだ分からないことがいっぱいで、試行錯誤の繰り返しで開発を行っております。

宜しくお願いします。
SingletonS2ContainerFactory.init()は、S2ContainerServletで行われているので、
やるひつようはありません。
Doltengで作ったプロジェクトなら、Actionのメソッドを呼び出すと自動的に
トランザクションがかかっているはずです。

JdbcManagerを直に使うのは何の問題もないです。
>>ひがやすを さん

ありがとうございます。
今、seasar2で開発を行っていて、納期が迫っているので本当に助かります。

ありがとうございます。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Seasar 更新情報

Seasarのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング