プロが教える店舗&オフィスのセキュリティ対策術

javaでmySQLのDBを扱っていますが、現在、以下のような問題が発生し、困っています。

ある画面でDBを更新します。
そして、別画面でそのDBの内容を参照すると、DB更新前の情報がとれてしまいます。
別画面でリロードすると、更新したDBの内容が反映されます。

これは、原因は何が考えられるでしょうか?
又、どのような対処を行えばよろしいでしょうか?

質問者からの補足コメント

  • このリロードというのは、画面のリロードですよね。?
    全ての画面にリロードを入れるという事になるのでしょうか?
    又、リロードする事によって、画面がちらつく事にはならないでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/11/25 11:44

A 回答 (3件)

>>別画面でリロードすると、更新したDBの内容が反映されます。


これは、原因は何が考えられるでしょうか?

まあ、それは普通のことで、異常ではないと思います。

別画面で、単にデータ参照するだけだと、以前に読んだ古いデータを保持していて、それを表示することはありえます。そうするほうが効率的で応答が早いから。
リロードすると、DBから最新データを読むので、時間がかかるけど、最新の更新されたデータが表示される。

ですから、データ参照する場合、常にリロードすればいいと思います。

ちなみに、私もWebシステムを開発しています。
応答速度を上げることと、システムの負荷を下げるため、管理画面には、キャッシュ設定がいくつもあります。
ただし、それらを有効にすると、「プログラムを修正したのに修正されていない!データを修正したのに古いままだ!!」ってことがあるそうです。
マニュアルを読むと、「システムj開発中は、キャッシュをOFFにしてください」なんて書かれていました。
この回答への補足あり
    • good
    • 0

>>このリロードというのは、画面のリロードですよね。



画面ではなく、DBからのデータの再読み込みです。

>>又、リロードする事によって、画面がちらつく事にはならないでしょうか?

画面がちらつくことはないですが、DBからのデータの読み込みと、それに続く処理があるから、再表示されるまで待たされる時間が増えるはずです。
    • good
    • 0

一つはトランザクションとロックの問題


ちゃんとした処理をいれていればアクセスごとに最新のデータが見えるようになります

もうひとつはキャッシュの問題
キャッシュがある限り常にユーザーのデータが最新かどうかはわかりません
サーバーにそう頻繁にデータを取りに行くことはないし
かりに取りに行っても更新がないとジャッジされれば同じデータが返ってきます
キャッシュを回避する方法としては毎回ユニークなワンタイムトークンを発行することです
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す