2012-01-04 11 views
2

データベースにデータを格納して取得するためにHibernateを使用するJava Webアプリケーションがあります。Java Webアプリケーションのメモリ処理

私が現在使っている戦略は、起動時にデータベースからアプリケーションにすべてをロードし、ユーザーがアプリケーションとやりとりしながらデータベースに保存/更新することです。

私がやったことは、ビジネスロジックの一部として各ユーザーのトランザクション履歴を記録することでした。 (したがって、このトランザクション履歴はすべてアプリケーションの起動時にロードされます)。

私が見ることができる問題は、トランザクションの履歴がたくさんあり、ユーザーが必ずしもそれらを見る必要はない可能性があるため、すべてのユーザーのすべてのトランザクション履歴を読み込むべきではないということです。多くのメモリが使い尽くされているため効率的ではありません。

私は、PHPのスクリプトが行うことができるものと同様のものがあるのだろうかと思っていました。ユーザーがトランザクション履歴を見ることを要求しただけで、サーバリソースを使用していないときだけです。 (データベースを照会するのとは別に)または私が現在直面していることに関するいくつかの提案/コメントは何ですか。

ありがとうございます。

+1

特定の情報が必要なときにHibernateに問い合わせるのはなぜですか? –

+0

実際、そうです。それは一種のばかげたことでした。 しかし、たとえば、私は大量のデータを持っており、それは頻繁に必要とされ、それをメモリに保存する方が良いでしょうか?その場合はどうすればいいですか? – HeavenAgain

+0

Hibernateにそのことを通知し、キャッシュを管理させます。 –

答えて

0

特定の情報が必要なときにHibernateを照会して、Hibernateがそれをデータベースに戻すように管理するようにします。これにより、Hibernateはキャッシングを管理できます。

Hibernateを使用する場合、Hibernateにデータを完全に管理させる必要があることに注意してください。生のSQLを使用して自分でデータを追加または変更しないでください。

最新のコンテナを使用している場合は、Java EEコンテナの標準であるJPAへの移行を考慮する必要があります。これにより、拡張が必要な​​ときに柔軟に対応できます。 JPAはHibernateに非常に近いですが、実装ではなくAPIであるため、複数の選択肢があります。

+0

おそらく、私はHibernateを正しく理解していないかもしれません。私は現在、オブジェクト/エンティティのプロパティを更新するたびに、セッションを開いて、更新し、コミットし、クローズします。私は、これがデータベースがプログラムの現在の状態と同期しなくなるのを防ぐだろうと考えました。しかし、あなたが示唆しているのは、セッションを開いたままにしておき、ユーザーがセッション/ログオフを終了したときに、そのオブジェクトが永続的に更新され、コミットして閉じられるようにすることです。 – HeavenAgain

+0

私はHibernateをよく知っていません。この状況では、Hibernateのドキュメンテーションはあなたに何を提案していますか? –

+0

私は実際にこれを調べましたが、これには2つのアプローチがあります。一つは私が現在使っているものです。 1つの操作につきセッション、もう1つは要求ごとのセッションです。私は実際により良い理解を得るためにこれを調べる必要があります。 (私には、データベースをアプリケーションと同期させておく必要があるため、1セッションあたりのセッションが意味を持ちます。しかし、私はHibernateが提供する永続性を利用していないことがわかります) あなたの答えとあなたの助けをありがとう! – HeavenAgain

0

なぜすべてのリクエストがハイバネーションになるのですか?レスポンス後にリリースされますか?これは一般的なアプローチです。

関連する問題