ORMとは、オブジェクト関係マッピング(Object Relational Mapping、略称ORM)のことで、オブジェクト指向プログラミング言語で異なる種類のシステムデータ間の変換を実現するためのプログラミング技術です。効果としては、プログラミング言語で使用できる「仮想オブジェクトデータベース」を作成することになります。
resultClassを戻り値パラメータとして使用しないでください。すべてのクラス属性名がデータベースフィールドと一対一で対応している場合でも、定義が必要です。逆に、各テーブルには必ず対応するものが存在します。
説明
マッピング関係を設定することで、フィールドとDOクラスを分離し、保守を容易にします。
sql.xml設定におけるパラメータについて注意:
#{}と#param#内で${}を使用しないでください。この方法ではSQLインジェクションが発生しやすくなります。iBATISに組み込まれている
queryForList(String statementName,int start,int size)の使用は推奨されません。説明
このメソッドの実装方法は、データベースからstatementNameに対応するSQL文のすべてのレコードを取得し、さらにsubListを使用してstart、sizeの部分集合を取得します。このため、本番環境でOOMが発生した事例があります。この問題を解決する方法として、sqlmap.xmlに
#start#,#size#を導入することができます。例:Map map = newHashMap (); map.put("start", start); map.put("size", size);HashMapやHashTableを直接クエリ結果セットの出力として使用することは許可されていません。
逆例:ある開発者が
<resultMap>を記述する手間を省くため、データベースからの返された結果を受け取るために直接HashTableを使用しました。その結果、日常的にbigintをLong値に変換していたところ、本番環境ではデータベースのバージョンが異なるためBigIntegerに解析され、本番問題が発生しました。データテーブルレコードを更新する際には、レコードに対応するgmt_modifiedフィールドの値を現在時刻に更新する必要があります。
大規模で包括的なデータ更新インターフェースを作成せず、POJOクラスを引数として渡し、更新対象のフィールドであるかどうかに関わらず、
update table set c1=value1,c2=value2,c3=value3;を実行するのは正しくありません。SQLを実行する際には、変更されていないフィールドを更新しないでください。一つにはエラーが発生しやすいこと、二つには効率が低いこと、三つにはbinlogのストレージが増加することが挙げられます。