03.基本概念:バインダー(Binder)とは

概要

ここでは、Spring MVCで重要な概念である、Binderについて見ていきます。
Binderを使用してデータオブジェクトを操作することをバインドといいます。
実はSpring自体の重要な概念です。
 
 
 
 
 
 

バインドとは

  Spring MVCの専門用語ではありません。Spring一般の用語です。英訳は、「結び付ける」という意味です。
  ある値を対象オブジェクト(モデル)に結び付けます。「結び付ける」とは、具体的には以下の処理のことです。
  (妥当性チェックも含まれるところもポイントです)

    ・型変換をし、値を対象オブジェクトに設定する
    ・プロパティ存在有無エラーと型変換エラーと妥当性チェックの結果を返す
 
 
   【バインドのイメージ】
     

   【注意事項】
    モデルのインスタンス1つについて、1つのBinderを結び付けをします。
    ですので、同じモデルクラスを操作するときも、インスタンスが違う場合は新しくBinderを作成して行います
 
 
 
 

Webにおけるバインドとは

  上記で一般的なバインド処理について見ましたが、WEBにおけるバインドは何か違うのでしょうか?
  大きな違いは、リクエストオブジェクトをバインドするということです。
  上の図では、"太郎"という文字列をBinderに渡していますが、WEB用のBinderにはリクエストオブジェクトをそのまま渡します。
  あとは、WEB用のBinderがうまくやってくれます。
 
  【WEBのバインドに必要なこと (設計上要求されること)】
   WEBでリクエストパラメタをモデルに設定するとき、指定のリクエストパラメタ以外は無視する機能が必要です。
   悪意のあるユーザが予期せぬパラメタを送り込んできて、自由にモデルの値を変更できるとまずいからです。
   セキュリティホールになってしまいます。
 
  【DAOに必要なこと (設計上要求されること)】
   ORマッピングのフレームワークでは、モデルの値(プロパティ)をそのまますべてDBに書き込むのが普通です。
   つまり、「同じクラスをDBに保存するのに、画面毎にSQLを別々に作る」 ということはあまりしません。
   不必要にSQL文が増え、開発効率がおちるからです。
   ですのでSpringに限らず、一般的に、DBを更新するときは、DBから現状の値(データオブジェクト)を取得して、
   更新するプロパティだけ設定し、再度DAOに渡します。(もちろんケースにもよります)
 
   Spring のBinderは上記2つの必要事項を満たします。
  このように、Springのバインドは、セキュリティとDaoの両方にとって要求される事項を満たしています。
 
 
 
 
 
 
 
 

 
 Created Date: 2012/04/07