HTTPによるサーバ上のDBとの同期

判り難いタイトルを変えた。

.NETではDataSetをDiffgramでサーバに送信できたように、DBのテーブルのイメージ、それも更新ログを含めたイメージをHTTPを介して表現できるプロトコルってJavaではなにが使えるんだろう。

JSDK上で似たものを探すとなるとRowSet(インタフェース)だろう。
RowSet - RowSetの概要 / Java6 - JDBC API 入門
その中でも標準実装で提供されているWebRowSetはHTTPを介することを前提にしたRowSetであり、.NETのDataSetの非接続型のデータベースゲートウェイ、且つHTTPシリアライズ可能という点でも似ているので代替には丁度良いかもしれない。
WebRowSet 実装 < RowSet - RowSetの概要 / Java6 - JDBC API 入門

Making the Most of JDBC with WebRowSet / ONJava.com

まだ調べ始めたばかりだが、Sunが提供しているWebRowSet用のXMLスキーマを見ると、そのデータエレメント中に

<xs:element name="currentRow" minOccurs="0" maxOccurs="unbounded">
:
<xs:element name="insertRow" minOccurs="0" maxOccurs="unbounded">
:
<xs:element name="deleteRow" minOccurs="0" maxOccurs="unbounded">
:
<xs:element name="modifyRow" minOccurs="0" maxOccurs="unbounded">
:

と、CRUDに対応する要素もあるので、更新差分の表現もできるのではないかと期待している。

XMLスキーマを使うのが癪だが、スキーマが嫌なのは冗長なことと専用のツール無しで手を入れるのが面倒なことだから、(構造に)手を入れずに全く無意識で使えるのであれば無問題だ。