Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Multitenancy avec CDI+JPA
ou Spring+Hibernate
Florian Beaufumé
06/2015
Florian Beaufumé
• Architecte logiciel
• Spécialisé en Java et web
• Freelance
• florian.beaufume@adeliosys.fr
• www.adeli...
App 1
Base 1
App 2
Base 2
App
Base 1 Base 2
Single-tenant Multitenant
Multitenancy
• Types :
• Database-per-tenant
• Schema-per-tenant
• Shared tables
• Datasource-per-tenant
• Bénéfices :
• Opérations sim...
• Supporter "database-per-tenant" et "schema-per-tenant"
• Supporter les opérations cross-tenant
• Supporter des données c...
Existant
CDI Spring
JPA Hibernate
Spécification
Java EE
Produit
Injection de
dépendance
Mapping objet
relationnel Implémen...
• JPA 2.1 (c.a.d Java EE 7) :
• Multitenancy prévue puis abandonnée
• CDI :
• Pas de fonctionnalités dédiées, utilisé pour...
• Hibernate :
• 4.3 :
• Supporte "database-per-tenant" et "schema-per-tenant"
• Mais une seule current session par session...
Données communes Données spécifiques
Table APPUSER (schéma commun)
Table ITEM (schéma tenant1)
Table ITEM (schéma tenant2)...
• Implémentation CDI+JPA :
• http://localhost:8080/multitenant-jpa/
• Implémentation Spring+Hibernate :
• http://localhost...
Implémentation
1
2 3
4
• Plusieurs stratégies possibles
• Tests unitaires : mocking
• Tests d'intégration :
• CDI+JPA : Arquillian
• Spring+Hiber...
Upcoming SlideShare
Loading in …5
×

Multitenancy avec JPA ou Hibernate

483 views

Published on

Introduction à la multitenancy avec CDI et JPA ou Spring et Hibernate

Published in: Technology
  • Be the first to like this

Multitenancy avec JPA ou Hibernate

  1. 1. Multitenancy avec CDI+JPA ou Spring+Hibernate Florian Beaufumé 06/2015
  2. 2. Florian Beaufumé • Architecte logiciel • Spécialisé en Java et web • Freelance • florian.beaufume@adeliosys.fr • www.adeliosys.fr • www.linkedin.com/in/fbeaufume
  3. 3. App 1 Base 1 App 2 Base 2 App Base 1 Base 2 Single-tenant Multitenant Multitenancy
  4. 4. • Types : • Database-per-tenant • Schema-per-tenant • Shared tables • Datasource-per-tenant • Bénéfices : • Opérations simplifiées (mise à jour, monitoring, etc.) • Optimisation des ressources • Fonctionnalités cross-tenant (tableau de bord, délégation, etc.) Isolation Multitenancy
  5. 5. • Supporter "database-per-tenant" et "schema-per-tenant" • Supporter les opérations cross-tenant • Supporter des données communes en plus de données spécifiques • Etre implémentable via JPA ou Hibernate et plus si affinités Objectifs
  6. 6. Existant CDI Spring JPA Hibernate Spécification Java EE Produit Injection de dépendance Mapping objet relationnel Implémente
  7. 7. • JPA 2.1 (c.a.d Java EE 7) : • Multitenancy prévue puis abandonnée • CDI : • Pas de fonctionnalités dédiées, utilisé pour DI et cycle de vie des composants Existant
  8. 8. • Hibernate : • 4.3 : • Supporte "database-per-tenant" et "schema-per-tenant" • Mais une seule current session par session factory et par contexte • Le cache L2 est "tenant aware", mais pas les stats de SF • 5.0 : • Ajout du support de "shared tables" • Spring : • Pas de fonctionnalités dédiées, utilisé pour DI et cycle de vie des composants • Même modèle de current session qu'Hibernate Existant
  9. 9. Données communes Données spécifiques Table APPUSER (schéma commun) Table ITEM (schéma tenant1) Table ITEM (schéma tenant2) Implémentation MyApp-Common-DS MyApp-Specific-Tenant1-DS MyApp-Specific-Tenant2-DS
  10. 10. • Implémentation CDI+JPA : • http://localhost:8080/multitenant-jpa/ • Implémentation Spring+Hibernate : • http://localhost:8080/multitenant-hibernate/ • Implémentation CDI+Jongo : • http://localhost:8080/multitenant-jongo/ Démonstration
  11. 11. Implémentation 1 2 3 4
  12. 12. • Plusieurs stratégies possibles • Tests unitaires : mocking • Tests d'intégration : • CDI+JPA : Arquillian • Spring+Hibernate : JTA avec Atomikos Tests

×