O/Rマッピングフレームワーク

MS-Accessや.NETのプログラムをJavaで、少しずつでも書き換えたいと思っている。

RDBMSPostgreSQLを利用する。
基本機能として、受注伝票のような親子関係をもつテーブルのCRUDが必要。

Accessの使いやすい点として連結フォームを利用でき、またサブフォームとローカルテーブルが連結しその編集機能が利用しやすい。
たとえば、受注伝票を参照したい場合
1.ADOを使用し、サーバーに該当伝票番号の親テーブルと子テーブルのレコードセットを取得する。
2.ローカルに(明細)子テーブルのレコードをローカルの一時テーブルに複写する。
3.フォーム上のテキストボックスに親伝票のキー、属性を代入し表示させる。
4.フォーム上にサブフォームがあり、ローカルの一時テーブルが連結されていれば子テーブルの内容が表示される。
5.この状態のフォームはサーバーに連結しているわけではないので、自由に変更できる。
6.修正追加等の編集結果をサーバーに反映させたければ、テキストボックスの情報をサーバーの親レコードへ書き戻し、一時テーブルのレコードを子レコードへマージングする。

この辺のプログラムはクラスモジュールにして移行しやすくコーディングしてきたつもりだが、
Javaに互換コントロールがあるわけでは無いので、コード書き換えは結構手間がかかる。

Javaへの移行で苦労しそうなところだが、オープンソースで使えそうなフレームワークがありそうなので
メモしておく。

どうやら「O/Rマッピング」というらしい。

Hibernateで覚えるO/RマッピングとBeanの常識
ttp://www.atmarkit.co.jp/fjava/rensai4/webjousiki09/webjousiki09_1.html

「表1 代表的なO/Rマッピングフレームワーク」をみると、
iBATISJava、.NET
HibernateJava、.NET
ActiveRecordRuby
Torque:Java
DB_DataObject:PHP
いろいろあったのね、知らなかった。

追伸:
「O/R(ORM) マッピングの是非」
ttp://blog.y-110.net/log/eid86.html
「完璧な翻訳ソフトが出来ないように, O/Rマッピングツールが生成する SQL にも効率には限界があるでしょう。」
その通りですね、運用時パフォーマンスが下がらないよう、チューニングが必要なようだ。