クレイジーに聞こえますが、ここに話があります。
バックグラウンド:
- 私たちのDBが次のようになっていると想像してください。会社には配偶者と子供を持つn人の従業員がいます。従業員もタイヤ付きの車を持っています...など...
- このアプリケーションは、WebUIとデスクトップUIの両方を提供します。そのため、ユーザーはデスクトップでオフラインで作業するために複数のテーブルからデータをロードしたいと考えています。例:約1000社をデスクトップにロードして作業します。
- データ量はなんとなく大きく、数千のレコードから時には10万のレコードまでさまざまです。しかし、オフラインでロードされるデータはそれほど大きくはなく、数千にすぎません。
現在のアーキテクチャ:
- Adobe ADEP4.6のHibernateAssemblerを使用しています。これは、DAOと非常によく似ています。たとえば、エンティティごとに1つのアセンブラーがあります。ただし、Hibernateへのアクセスは非常に制限されています。
- Webの場合、これまでのところLAZYLoadingを使用しています。
- AIRデスクトップについては、多くのオプションを試しています
AIRデスクトップのオプション、エンティティはすべてLAZYとしてマークされていることに注意してください。次のオプションのいずれかについて、検討しています。
- 名前付きhqlで「fetchjoin」を使用する:会社、従業員、車、タイヤを1つのhqlにまとめてロードする
- 各テーブルを個別にロードしてから、手動で一致させます。
- BatchSizeでEAGERFETCHを使用しますか?!! 制御が難しい
- Hibernateをあきらめて、巨大なJDBCクエリに戻ります。
アドバイスをお願いします。ありがとう