2006-01-01から1年間の記事一覧

バリデーションの担当層

入力値のバリデーションはプレゼンテーション層の担当ですが、バリデーションルールをプレゼンテーション層で決定できないときもあります。値の範囲がDBに格納されているような場合です。このときはバリデーションをロジック層で実行することになりますが、…

画面遷移

S2JSFを使っていて、JSFのnavigation-rule(あるいはStrutsのforward)による画面遷移は少し機能不足だと思いました。 1. 接続プロトコルの切り替えができない非SSL画面からSSL画面への遷移を記述できません。逆も同じです。 2. 次画面にパラメータを渡せな…

diconファイルの切り替え

diconファイルのツリーに、以下のインクルード構造が含まれているとします。 someapp/allLogic.dicon j2ee.dicon ここで、「テスト時にはj2ee.diconでなくj2ee_test.diconを使いたい」という要請があったとします。 このためには、j2ee.diconの代わりにj2ee_…

DTOのライフサイクルとプロパティの保存

DTOのライフサイクルをrequestにする場合、プロパティはフォーム部品にバインディングして保持することになりますが、List型のプロパティを保存できないのが悩ましいです。 public class EditEmployeeDto implements Serializable { private String name; pr…

nullチェック

以下のようなDaoがあります。 public interface EmployeeDao { public static final Class BEAN = Employee.class; public static final String getById_ARGS = "id"; public Employee getById(Long id); public static final String getByName_ARGS = "name…

エンティティとDTO

ひがさんのblogを参考に、DTOにエンティティを継承させて直接DBとやり取りするという手法をしばらく使っていました。エンティティとDTOの相互変換コストが発生しないのがメリットです。初めのうちは問題が無かったのですが、システムの仕様が複雑化するにつ…

DAOの作成の簡略化

S2Daoでは非常に簡単にDAOを作成することができますが、Genericsでさらに簡略化を図ってみました。 public abstract class Entity implements Serializable { // annotation for S2Dao public static final String id_ID = "identity"; private Long id; pub…

相対パスとS2JSF

S2JSFでは、アプリケーション実行時のパスがHTMLの存在する実際のパスと同一である保証がないので、HTML中に相対パスを書くとリンク切れを起こしてしまうことがあります。 /pages /error sql_exception.html /images alert.gif search.html例えば上の構成で…

非NULL制約とS2Unit

S2Unitでは、テストメソッドの先頭で、Excelシートに記述された初期値をテーブルに代入します。このときテーブルに非NULL制約のカラムがあれば、当然そのカラムをExcelシートにも用意しないとSQLエラーになってしまいます。テスト数が増えてくると、テストメ…

IDの自動生成とS2Unit

MySQLでAUTO_INCREMENTによるIDの自動生成を行っていると、S2Unitでテストを実行する時に少し困ったことが起こります。AUTO_INCREMENTカウンタはトランザクションがロールバックされてもリセットされないので、テスト中に新規挿入されるIDの値が直前までのテ…

blog開始

システム開発の過程で生まれた疑問点などを、備忘録の意味も兼ねて書いていこうと思います。

カラムマッピングの高速化

S2Daoを使ってエンティティのリストを取得するとき、 エンティティのプロパティ数が多く かつ、一度に取得されるエンティティ数が多い ような場合、大量のsetterがリフレクションで呼ばれることによってパフォーマンスが悪化するようです。そこで、次のよう…