私は、Webアプリケーションのマルチテナント化ソリューションを探しています。 Separate Schema Modelを使用してアプリケーションを実装したいと思います。セッションごとにデータソースがあると思っています。これを行うために、私はデータソースとエンティティマネージャをセッションスコープに入れましたが、動作していません。私はユーザーがusernameとpasswordとtenantIdを入力したときにdata-access-context.xml(データソースと他のリポジトリBeanを含む)ファイルを読み込むことを考えています。私はそれが良い解決策であるかどうかを知りたいですか?SpringによるマルチテナントJPA
答えて
マルチテナントはやや難しい問題であり、JPAプロバイダ側で処理する必要があるため、クライアントコードの観点からは何も変わりません。 eclipselinkはマルチテナンシー(EclipseLink/Development/Indigo/Multi-Tenancyを参照)をサポートしています。hibernateが最近追加されました。
もう1つの方法は、AbstractRoutingDataSource
を参照してください。Multi tenancy in Hibernateを参照してください。
セッションスコープを使用することはあまりにも危険です(データベース接続数は数千に増え、すべてのセッション/ユーザーにはほとんどかかりません)最後にEntityManager
とその基礎となるデータベース接続はシリアル化できないため、セッションを移行したり、適切。
私はマルチテナントシステムの数で働いてきた。ここでの課題は、あなたがあなたのビジネスに発展するソリューションを提供
- オープンアーキテクチャと
- を維持する方法である。
第2の課題を最初に見てみましょう。マルチテナントシステムは、同じデータ(レコード)に容量の異なる複数のテナント(たとえばhttps://bugs.eclipse.org/bugs/show_bug.cgi?id=355458)がアクセスできるユースケースをサポートする必要がある場合に発展する傾向があります。したがって、システムには最終的にアクセス制御リストが必要です。
オープンアーキテクチャを維持するために、標準(JPAなど)にコーディングすることができます。 EclipseLinkやHibernateへのコーディングは私を不快にさせます。
スプリングセキュリティACLは、これらの両方の課題に対して非常に柔軟なコミュニティ対応ソリューションを提供します。試してみてください。私はそのパフォーマンスに満足してくれました。しかし、私はあなたに注意する必要があります、それは私の周りに私の頭を得るためにいくつかの掘削が必要でした。
- 1. Springデータによる監査JPA
- 2. JPAでHibernate 4でマルチテナントを有効にするには?
- 3. マルチテナント環境でJPA @Column(unique = true)を使用するには?
- 4. SpringとOpen JPA
- 5. JPAとSpring JdbcTemplate
- 6. Spring Open JPA
- 7. Spring-JPAのテスト
- 8. spring jpa doubts
- 9. spring jpa application.properties useSSL
- 10. Spring e Jpa
- 11. Extjs + Spring + JPA + HIbernate
- 12. Spring、JPA、およびHibernateの問題
- 13. struts2 spring jpa layersベストプラクティス
- 14. Spring JPAデータ "OR"クエリ
- 15. SpringデータJPAとQueryDSL
- 16. KibanaとElasticsearchによるマルチテナント設定
- 17. Spring Data JPAはJPA実装ですか?
- 18. JPA/Spring-Data JPAで監査を使用するには?
- 19. JPAリポジトリコンセプト一般的なコンセプトやSpringフレームワークによる造語?
- 20. マルチテナントFacebookのようなソリューション
- 21. Spring Data JPA - 仕様とQuerydsl
- 22. ExtJS4、Spring JPA、Restful services、Hibernateアプリケーション
- 23. JPA pure approchを持つSpring
- 24. Spring JPA REST One to Many
- 25. Spring MVC JPA遅延例外
- 26. JPA with Spring MVC Annotationsによって設定されました
- 27. ApplicationContext.xml、DAO、およびServiceがあるSpring JPAはNULLです
- 28. JPA&Spring- Springから共有EntityManagerを取得する方法は?
- 29. マルチテナントDjangoのアプリケーション
- 30. マルチテナントのasp.net MVC2
Hibernateは、JPA(@ PersistenceContext/EntityManager)ではなく、SessionFactory(つまりHibernateネイティブ)を使用する場合にのみマルチテナントをサポートします。 – pap
こんにちは、あなたの答えに感謝します。本当に役に立ちました。そしてあなたは正しいです。それはJPAをサポートしません。私は 'AbstractRoutingDataSource'を使用することを選択しました。しかし、問題は、起動時に初期化されたデータソースとentitymanagerのBeanです。とにかく、これが春にどのように設定されて、ユーザーが認証された後で初期化されるのですか? – mettok
@ user1057347:新しい質問を開いてください。これはコメントで説明するにはあまりにも複雑すぎます(将来は十分には目立たないでしょう)。私はフォローアップできるように新しい質問へのリンクを投稿してください。 –