スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

10/16-17

この記事はブロとものみ閲覧できます

XMLEncoder/Decoder

Java XMLEncoderでオブジェクトを保存

自分への覚書として。

エクセル形式の入出力でデータベース更新する要件がある。これが曲者で。
1.入力したデータを永続化して、同じエクセルデータ(行順番を保持)をダウンロードできるようにする
2.かつ他の処理にて更新された内容は、エクセル出力時更新する
3.仮登録状態でも一旦データベースに入れること(Numどーすんだよ)
4.表示上、データベースの1:N関係を列のカラム追加で表現する(つまりエクセルフォーマットは動的に変わる)
という条件がある

1は、極端な話入力ファイルを保持しておけばいい(データの持ち方はかなり冗長だが)
でもそうすると2が面倒。エクセルをシステムで上書きしないといけない。セル単位の単純更新ならいいけどそうはいかない。(行追加、列追加があり得る)
3も型変換やとりあえずデータベース項目に何入れるの?が面倒極まりない
4も困る。カラム数が動的に変わるので、1をやろうとすると、データベースのように、属性とその業務データをマッピングした形で永続化しておかないといけない。だったらテーブル用意して入れちゃえよ、なんだけどそうすると、1,3の情報は保持できないのだ。

まぁ、とにかく、データベースでは永続化する予定のない列順番情報、仮項目を含む、ユーザ入力のRawDataを保持する必要が出てきてしまうわけで。

それ専用のテーブルを用意すると、set/getが大変だし、持ち方が冗長すぎて気に食わない。

前置きが長くなってしまいましたが、そういった要件にマッチするいい実装ないかなー、と探して見つけたのが上記。

これすごく便利。

サンプルはリンク先を読んでいただくとして。

これを使えば
・ListObjectを詰めれば、行順番の表現可能
・エクセルフォーマットが動的に変化してもその形式に合わせデータ保持が可能
になる。素晴らしい。

こいつで、アップロード時に読み取ったデータをオブジェクトに展開、文字列変換して、次のダウンロード時にはその文字列をオブジェクト展開して使用することにする。うーむ、やっぱりシステム開発に必要な機能って、すでに先人が開発してるのね。

ちなみにその文字列はCLOBでデータベースに永続化予定。

この方式でうまくいくかはこれからのお楽しみ。


お久しぶりでございます

ちゃんと書きます。。。
プロフィール

U1000

Author:U1000
30歳前後
IT系大企業勤務
東京在住

最近の記事
最近のコメント
カテゴリー
ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。