1

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

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

  1. がどの@ManyToOneは、そのエンティティのtoString()に置き換えられるように、私はエンティティを水和ExcelやXML 形式でのフルエクスポートを提供します

    私は、私はどちらかのことを考えています。これは、多くの外来キーIDではなく、実際にデータがユーザーにとって意味をなされるようにするためです。

  2. データベースコピーに対してSQLを実行させます。すべてのテーブルに TENANT_IDがあることを確認して、 データベースコピーにアクセスさせますが、IDは に追加してください。私は、このデータベースのコピーにデータが入っていることを保証することすらできます。並べ替えはマルチテナントアプローチ全体を敗北させる。

答えて

1

これらのユーザーのクエリはどのくらい複雑になりますか?任意のSQL?または、HQLやCriteriaを使用して取得することができますか(実際には、ユーザーがUIで何らかのQBEを定義できるようにしていますが、実際のクエリを構築することになります)。後者の場合、フィルタはかなり助けになるかもしれません。

クエリ結果が常にプレーンリストでない限り、私は(1)とは気にしません。 XMLで階層/関係を表現することはできますが、処理しなければならないようにユーザーには分かりません。 (例えば、BsにリンクされているAsのリストを返すと、user1はB.toStringとは異なる結果を望むなど、異なるユーザーが同じオブジェクトの異なるレンダリングに興味を持つようになるため、逆方向に進むことが保証されます) )次にuser2)。

(2)は、本当に任意のSQLクエリが必要な場合に有効です。データベースの複雑さとユーザー数に応じて、実際のデータベースコピーではなく、ユーザーごとにビューを作成することができます。

0

私は同じ問題を抱えており、マルチテナントを「隠す」カスタムODBCドライバを実装することについて(難しい)考えています。データ直接OpenSDK ODBCをチェックアウトしてください...

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

関連する問題