1

MySQLを介したHibernateを使用するマルチテナントのWebベースのエンタープライズアプリケーションがあります。お客様が必要とするすべてのレポートにJasperReportsを使用しますが、ユーザーが独自のクエリを実行できるように、アドホックレポートも提供する必要があります。

他の人はこれをどのように達成しましたか?

私は次のいずれかができると考えています。

  1. @ManyToOneエンティティをハイドレイトして、いずれかがそのエンティティのに置き換えられるように、Excelまたはxml形式で完全なエクスポートを提供しtoString()ます。これは、大量の外部キーIDではなく、データが実際にユーザーにとって意味のあるものになるようにするためです。

  2. データベースコピーに対してSQLを実行させます。すべてのテーブルにTENANT_IDがあることを確認し、データベースコピーにアクセスできるようにしますが、バックグラウンドですべてのクエリにIDを追加します。このデータベースコピーにデータのみが含まれていることを確認することもできました。ただし、マルチテナントアプローチ全体を打ち負かすようなものです。

4

2 に答える 2

1

これらのユーザー クエリはどの程度複雑になりますか? 任意のSQL? または、HQL または Criteria を使用して取得できますか (これが本当に意味することは、ユーザーが UI である種の QBE を定義できるようにすることですが、実際のクエリを作成するのはあなたになるということです)? 後者の場合、フィルターもかなり役立つ場合があります。

クエリ結果が常に単純なリストでない限り、(1) は気にしません。階層/関係を XML で表すことはできますが、ユーザーはそれを処理する必要があるため、これを高く評価するとは思えません。また、toString() アプローチは、さまざまなユーザーが同じオブジェクトのさまざまなレンダリングに関心を持つことになるため、裏目に出ることがほぼ保証されています (たとえば、B にリンクされている As のリストを返す場合、user1 は B.toString( とは異なる結果を望むでしょう)。 ) 次に user2)。

(2)任意のSQLクエリが本当に必要な場合は機能するはずです。データベースの複雑さとユーザー数によっては、実際のデータベース コピーの代わりに (ユーザーごとに) ビューを作成することで対処できる場合があります。

于 2009-07-13T18:22:28.567 に答える
0

私は同じ問題を抱えており、マルチテナンシーを「隠す」カスタム ODBC ドライバーの実装について (難しい) 考えています。Data Direct OpenSDK ODBC を確認してください...

http://www.datadirect.com/products/odbc/index.ssp

于 2010-02-02T18:02:52.283 に答える