seasar2覚書

今までブログに書いてましたが、削除してWikiにまとめます。 ブックマークしてくれていた方々すいません。http://www22.atwiki.jp/seasar2/

S2Unitでトランザクションをコミットする方法

S2Unitでテストをする際に、必ずロールバックされるものだと思ってたが、@TxBehaviorアノテーションを使うことでコミットできるんですね。。全く知りませんでした。 @TxBehavior(TxBehaviorType.COMMIT) public void test() { // }

InterceptorからActionFormを取得する方法

S2ActionMappingにもっているので下記方法で取得できる。 XxxForm xxxForm = S2ActionMappingUtil.getActionMapping().getActionForm();S2ActionMappingは、色々便利なメソッドがあるので、フレームワーク系の処理を書くときに便利。

S2UtilのBeanCopy

S2Util版BeanUtilの紹介 - wyukawa's diaryS2UtilのBeanCopyは、こんな感じで、executeが不要らしい。 BeanUtil.copyBeanToBean(src, dest);これはうれしい。execute忘れてもコンパイルエラーが出ないので、結構はまる人が多かった。 リリースはもうすぐかな…

SQLの組み立ては、ActionクラスかServiceクラスか

SimpleWhere等を使用して、SQLを組み立てる場合にActionで組み立てるのがいいかServiceで組み立てるのがいいのか悩んでいる。Seasar Conference 2008-SAStrutsの開発Tipsでは、Actionクラスでの組み立てができることになっているが、 最新のS2AbstractServic…

Validationエラー後に、画面表示処理を行う方法

@Executeのinputには、JSPだけではなく、Actionクラスのメソッドも指定できる。Validationエラー後に、セレクトボックスの値取得等の画面表示処理をしたい場合は、この方法でできる。

SQLファイルの置き場所

SQLファイルの置き場所は、entityの配下がいいのか?Service配下がいいのか?公式ドキュメントでは、entity配下を推奨しているが、「Seasar 2 徹底入門」では、Service配下で説明していたような気がする。決めの問題か。

メンバーが誰かより、誰をどこに配置するかが重要

今までプロジェクトとの体制について思うことといえば、 誰がメンバーにいるかだったが、 それよりも、誰をどこに配置するかが重要だと今回のプロジェクトで思った。みんながみんな声が大きいわけではない。 どこに配置されるかによっていいたいことがいえな…

用語は明確に定義する

用語集だけを見ても、書いていることは理解できるが、頭に入ってこない。 難しい概念は、具体例などを沿えた用語の定義資料があればよいと思う。

推奨のパッケージ構成は?

SAStrutsを使用した場合の、パッケージ構成はどれがいいのだろう? まず、HOT Deploy対象・非対象は分けておいたほうがよさそう。(公式ページには書いてないが)では、HOT Deploy対象配下はどのようにするべきか? 考えられるパターンとしては、以下のどちら…

findByIdで論理削除を除く

findByIdで論理削除されているレコードを除くには、AbstractServiceでやるのがいいみたい。 S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ けどこの方法は、DBの主キーにIDが導入されている場合なら、 作成するメソッドが一つでいいが、IDが導入さ…

楽観的ロック発生時の例外処理

楽観的ロック発生時には自画面を表示し、"既に変更されてます"というエラーメッセージを出したい。 Serviceクラスがトランザクション境界の場合は、ActionでSOptimisticLockExceptionをキャッチして、 自画面へreturnすればいいのだが、Actionクラスがトラン…

トランザクション境界はActionかServiceか

今までずっと、Service層でやってきたけど、Actionの方が単純でよいのか? Action層にすると DBを使用しない処理でもトランザクションが発生してしまうので少し気持ち悪い。 1リクエストで複数のテーブルを更新する場合に、Service層に各テーブルを更新する…

DBアクセス時の共通処理の実装

DBアクセス時に共通化したい処理はいくつかあるが、まずは、"INSERT時に更新日時をセットする"という単純なものをS2JDBCで作ってみた。 (以下の記事を非常に参考にさせていただきました。) S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ テーブル…

指定されたテーブルのデータを、指定された件数だけ取得

ResultSetMetaDataを使用して作成。 指定された開始位置から終了位置までの、テーブルデータを取得する。 public List getRecordData(String tableName, int startIndex, int endIndex, Connection con) throws SQLException { List recordList = new ArrayL…

指定されたテーブルのCREATE文を生成する

DatabaseMetaDataを使用して作成。 接続しているデータベースから、指定されたテーブルのCREATE文を生成する。 少し手抜きなので、基本的な型しかうまくいかない。 public void outputCreateTableSql(String tableName, Connection con) throws SQLException…

DatabaseMetaData指定されたテーブルのカラム名を取得する

DatabaseMetaDataを使用して作成。 接続しているデータベースから、指定されたテーブルのカラム名を取得する。 private List getColumnNameList(String tableName, Connection con) throws SQLException { List columnNameList = new ArrayList(); DatabaseM…

データベースからテーブル一覧を取得する

DatabaseMetaDataを使用して作成。 接続しているデータベースから、指定された条件に部分一致するテーブル名称を取得する。条件がブランクなら、全てのテーブルを取得する。 public List getTableNameList(String tableName, Connection con) throws SQLExce…

MySQLのインストール

久しぶりに自宅でプログラミングを使用という気になった。 データベース周りのプログラミングをしたいので、 まずは、MySQLの準備をやってみた。 1.MySQLのダウンロード 下記URLの"MySQL Community Server"をダウンロードhttp://dev.mysql.com/downloads/ 2.…

GUIのテストパターン

検索系画面 デフォルト表示 ユーザ/権限等による、表示/非表示項目の確認。 プルダウン系は正しくマスタから取得しているかの確認 抽出条件、ソート条件が正しいこと 検索結果 各検索項目での検索の確認 1項目ずつ確認 + 組み合わせでの確認。必ず1項目ず…

働きたい人を邪魔してはいけない

お前が、そこまでやらなくていいとか、 うちの会社がそこまでやる必要ないとか言われると 非常にやる気がなくなる。

なぜ仕事が任せられないか

自分でその仕事をやることが楽だから。 本当はその仕事をやらず、1ランク上の仕事をしなければいけないが、 1ランク上の仕事をするのがしんどいから、楽にこなせる仕事をやって 仕事をしている振りをしている。

テスト結果のエビデンスをとる理由

テスト結果のエビデンスはなぜとるか?各メンバーに手抜きをせず、テストを実施してもらうため。 エビデンスをとってもらうことで、 後で確認されるという意識をもってもらえるので 確認もしっかりしてもらえる。

思考の過程を伝える

今の仕事は、チームメンバーの作業で問題が発生した際に、 解決を手伝うということが多い。そのとき、最終的な解決策ばかりを伝えるのではなく "自分がどのようにして、その問題の解決策を考えつくに至ったか"という 思考の過程も伝えるようにしている。 こ…

各メンバーは、自分に関係ないメールは読まない

情報共有のためのメールは、各メンバーの仕事に直接関係ないので、 真剣に読んでもらえていないことが多い。 情報共有したいことは、メール+ミーティングでの口頭連絡が必要。

何に時間がかかっているのかを把握する

他のメンバーに作業をお願いしていると、 予想より時間がかかっていることが結構ある。そのときは、タスクを細かく分割し、 具体的に何に時間がかかっているのかを把握し、 それを軽減させることが、自分のやるべき仕事だと思う。

インタフェース設計で考慮すべきこと

キー項目は何か 更新頻度はどのくらいか 差分送信か全件送信か 各項目は、必須項目か任意項目か 固定長か可変長か 固定長であれば、右詰か左詰か

AxisでWebサービス

今更Webサービスもなんですが、一度もさわったことがなかったので少し勉強してみました。 環境構築 まずは、環境構築。 JDK 1.5 tomcat 5.0.28 axis 1.2 JDKとtomcatのインストール方法は省くとして、axisだけ簡単に。 axisをダウンロードして解凍 解凍したa…

重要な仕事に集中する

最近は目の前の仕事に集中しすぎている。これからは、緊急ではないが重要な仕事に重点を置きたい。

仕事で頭を使っていない

最近の仕事は、ちから技で資料を作る仕事が多い。 考えるということはあまりせずに、既存の資料を寄せ集めて整理しているようなことが多い。 実は意味のない仕事をやっているのかもしれない。