Successfully reported this slideshow.
Your SlideShare is downloading. ×

Multitenancy avec JPA ou Hibernate

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 12 Ad

More Related Content

Similar to Multitenancy avec JPA ou Hibernate (20)

Advertisement

Recently uploaded (20)

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

×