- PR -

JSP+ServletでDB内のデータをツリー表示したいのですが。。。

1
投稿者投稿内容
ArIK
会議室デビュー日: 2004/04/16
投稿数: 4
投稿日時: 2004-04-20 14:44
こんにちは。

JSP+Servletを用いてDB(Oracle9i)内のデータを
エクスプローラのようなツリー表示したいのですが、
その実現方法がわかりません。

あらかじめ固定されたデータのツリー表示は
HTML+CSS+JSで可能なのですが、DB内のデータを
ツリー表示するので、データ件数が多い場合や
途中でデータが更新された場合などを考えると
HTML+CSS+JSでやるには、かなり力技になりそうです。

そこで、JSP+Servletを用いた実現方法をご存知の
方がいましたら、ご教示をお願いします。

尚、環境はJSP+Servletにこだわっているわけではありませんが
Java環境で実現したいと思っています。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2004-04-20 14:51
引用:

あらかじめ固定されたデータのツリー表示は
HTML+CSS+JSで可能なのですが、DB内のデータを
ツリー表示するので、データ件数が多い場合や
途中でデータが更新された場合などを考えると
HTML+CSS+JSでやるには、かなり力技になりそうです。


HTML+CSS+JSでできるのならJavaScriptの実装を
ServletなりJSPなりにポーティングするだけですよね?
もともと固定のデータがあるかDBからとって来るかの違いしかない。

もしかして一度開いたページに対してテーブルが更新されたら
リロードするようなことまで考えていますか?
だとすれば、ポーティングのあとでもう一度再読み込みの仕組みを
考えたらよいのではないかと。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-04-20 15:12
引用:

ツリー表示するので、データ件数が多い場合や



データ件数が多い場合はどこかで我慢するしかないですね。の前に100万件や1000万件オーダーのデータを画面に表示させてもあまり有用でない気はするんですが……まあ、それは置いておいて。

無理して考えるなら、ツリーの展開されている部分だけ実データを取得して、残りに関しては再問合せをさせるとかでしょうか。そうすると、クライアント側で保持するデータ量は少なくなります。
まあ、新しく展開する度にいちいちリクエストを飛ばしてレスポンス待つというのもアレなんですが……仕方ないでしょう。

引用:

途中でデータが更新された場合などを考えると



DB内のデータ変更をリアルタイムに検知ですか……。あまりそういうのは見ない気がします。よく見る「リフレッシュ用のUI(ボタン等)を用意する」形式が無難かと思います。
#例えば、画面をスクロールさせて下の方を見ているときにいきなりリフレッシュされたりした場合を考えてみてください。どこを見ていたか分からなくなったりと、逆に不便ではないでしょうか、自動は。

引用:

HTML+CSS+JSでやるには、かなり力技になりそうです。



何でやってもかなり力技になると思います。
#DBデータのリアルタイムダンプを考えてらっしゃるようですから
ArIK
会議室デビュー日: 2004/04/16
投稿数: 4
投稿日時: 2004-04-20 15:33
まりりさん、永井和彦さん
返信有難うございます。

お二人の意見からいくと、環境面の問題ではなく
機能的にどのように実現するかってことですよね。

DBのデータを表示する件ですが、自動で再表示などは
考えていません。永井和彦さんのおっしゃるとおり急に
見てたページの内容が変わるのは、私もおかしいと
思います。

ただ、ツリーを展開していき、展開したある箇所から
データを新規追加して、再表示というのは考えています。
どちらにしても力技にはなってきそうです。。。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-04-20 16:29
引用:

DBのデータを表示する件ですが、自動で再表示などは
考えていません。



自動での同期処理がないのでしたら、まりりさんの仰るように

引用:

もともと固定のデータがあるかDBからとって来るかの違いしかない。



……ですよね?大変だとは思いますが……この路線でやるなら、あとは頑張るしかないと思います。

引用:

ただ、ツリーを展開していき、展開したある箇所から
データを新規追加して、再表示というのは考えています。



これは、単純に追加処理を行ってから再度画面を作り直すだけ(だけ言っても、相当重そうですが)だと思います。
1

スキルアップ/キャリアアップ(JOB@IT)