JSFとPrimeFacesを使用してWebサイトを開発しています。開発時に、どの Web アプリケーションにも 2 つのボトルネックがあることに気付きました。私が間違っている場合は修正してください。
ボトルネックは次のとおりです。
永続化レイヤーに Hibernate フレームワークを使用しました。データベースで変更が発生した場合、それをスコープ Bean に反映する方法はありません。Hibernate には動的更新属性があり、[永続化時に] テーブルの影響を受けるレコードのみを更新するのに役立ちます。しかし、常に更新されたDAOを取得できる同様のメカニズムは見つかりませんでした。
session.refresh()
ここで、開発者は、データベース テーブルからオブジェクト ツリー全体を再ロードするだけのメソッドを使用して、それらを更新する責任を負う必要があり ます。したがって、小さなデータベースの変更ごとに、セッションキャッシュから削除されるたびに [Hibernate の] DAO のキャッシュ機能が失われると思います。つまり、データベースの更新は DAO の更新をトリガーしません。DAO を更新した後、変更をビュー レベルに反映させたい場合は、Primeface ソケット [PrimePush] を使用する必要がありました。これは、毎回ページを更新するのは適切な実装ではなく、primeface ソケットを使用すると特定の ID を更新できるためです。つまり、DAO フィールドごとに、それぞれ固有のチャネルを持つさまざまな Primeface ソケットを利用する必要があります。また、これらの異なるソケットへのメッセージの送信は、開発者が Bean コードで行う必要があります。
では、問題は、これらを効率的に処理するにはどうすればよいかということです。開発者が心配する必要がないように、これらの問題を処理する他のテクノロジ/フレームワークはありますか?