SlideShare a Scribd company logo
1 of 12
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.adeliosys.fr
• www.linkedin.com/in/fbeaufume
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 simplifiées (mise à jour, monitoring, etc.)
• Optimisation des ressources
• Fonctionnalités cross-tenant (tableau de bord, délégation,
etc.)
Isolation
Multitenancy
• 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
Existant
CDI Spring
JPA Hibernate
Spécification
Java EE
Produit
Injection de
dépendance
Mapping objet
relationnel Implémente
• 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
• 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
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
• 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
Implémentation
1
2 3
4
• Plusieurs stratégies possibles
• Tests unitaires : mocking
• Tests d'intégration :
• CDI+JPA : Arquillian
• Spring+Hibernate : JTA avec Atomikos
Tests

More Related Content

What's hot

Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...Microsoft Technet France
 
Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Microsoft
 
Résilience avec Hystrix dans Liferay
Résilience avec Hystrix dans  LiferayRésilience avec Hystrix dans  Liferay
Résilience avec Hystrix dans LiferayQuang Tu LE
 
LabVIEW™ internet and network applications
LabVIEW™ internet and network applicationsLabVIEW™ internet and network applications
LabVIEW™ internet and network applicationsAlexandre STANURSKI
 
Presentation Backup & Restore SharePoint 2013 Farm
Presentation Backup & Restore SharePoint 2013 FarmPresentation Backup & Restore SharePoint 2013 Farm
Presentation Backup & Restore SharePoint 2013 FarmYoussef El Idrissi
 
Cnam cours azure ze cloud intro et présentation generale 2016
Cnam cours azure ze cloud intro et présentation  generale 2016Cnam cours azure ze cloud intro et présentation  generale 2016
Cnam cours azure ze cloud intro et présentation generale 2016Aymeric Weinbach
 
Déploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloudDéploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloudMicrosoft Technet France
 
Azugfr 2703 - service fabric
Azugfr   2703 - service fabricAzugfr   2703 - service fabric
Azugfr 2703 - service fabricWilfried Woivre
 

What's hot (8)

Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
 
Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4
 
Résilience avec Hystrix dans Liferay
Résilience avec Hystrix dans  LiferayRésilience avec Hystrix dans  Liferay
Résilience avec Hystrix dans Liferay
 
LabVIEW™ internet and network applications
LabVIEW™ internet and network applicationsLabVIEW™ internet and network applications
LabVIEW™ internet and network applications
 
Presentation Backup & Restore SharePoint 2013 Farm
Presentation Backup & Restore SharePoint 2013 FarmPresentation Backup & Restore SharePoint 2013 Farm
Presentation Backup & Restore SharePoint 2013 Farm
 
Cnam cours azure ze cloud intro et présentation generale 2016
Cnam cours azure ze cloud intro et présentation  generale 2016Cnam cours azure ze cloud intro et présentation  generale 2016
Cnam cours azure ze cloud intro et présentation generale 2016
 
Déploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloudDéploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloud
 
Azugfr 2703 - service fabric
Azugfr   2703 - service fabricAzugfr   2703 - service fabric
Azugfr 2703 - service fabric
 

Similar to Multitenancy avec JPA ou Hibernate

DocAve, une plateforme pour accélérer l’adoption et sécuriser l’usage de shar...
DocAve, une plateforme pour accélérer l’adoption et sécuriser l’usage de shar...DocAve, une plateforme pour accélérer l’adoption et sécuriser l’usage de shar...
DocAve, une plateforme pour accélérer l’adoption et sécuriser l’usage de shar...Antoine Driard
 
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveRomainKuzniak
 
Jouve Open Search
 Jouve Open Search Jouve Open Search
Jouve Open SearchJouve
 
Démonstration : Comment la plateforme Denodo permet d'accélérer l'analyse de ...
Démonstration : Comment la plateforme Denodo permet d'accélérer l'analyse de ...Démonstration : Comment la plateforme Denodo permet d'accélérer l'analyse de ...
Démonstration : Comment la plateforme Denodo permet d'accélérer l'analyse de ...Denodo
 
Mobile-Chp4 côté serveur
Mobile-Chp4 côté serveurMobile-Chp4 côté serveur
Mobile-Chp4 côté serveurLilia Sfaxi
 
Global Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
Global Office Bootcamp Montreal 2018 Introduction au Microsoft GraphGlobal Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
Global Office Bootcamp Montreal 2018 Introduction au Microsoft GraphVincent Biret
 
Azure Policy: Un outil pour la gouvernance
Azure Policy: Un outil pour la gouvernanceAzure Policy: Un outil pour la gouvernance
Azure Policy: Un outil pour la gouvernanceWilfried Woivre
 
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019Bonitasoft
 
Présentation GLPI aux RMLL 2017
Présentation GLPI aux RMLL 2017Présentation GLPI aux RMLL 2017
Présentation GLPI aux RMLL 2017Nouh Walid
 
7 Session Aerow - New experience and SharePoint Framework
7   Session Aerow - New experience and SharePoint Framework7   Session Aerow - New experience and SharePoint Framework
7 Session Aerow - New experience and SharePoint FrameworkaOS Community
 
aOS Genève - Session - New Experience & SharePoint Framework
aOS Genève - Session - New Experience & SharePoint FrameworkaOS Genève - Session - New Experience & SharePoint Framework
aOS Genève - Session - New Experience & SharePoint FrameworkJean NETRY-VALERE
 
aOS Toulouse - Session - New Experience & SharePoint Framework
aOS Toulouse - Session - New Experience & SharePoint FrameworkaOS Toulouse - Session - New Experience & SharePoint Framework
aOS Toulouse - Session - New Experience & SharePoint FrameworkJean NETRY-VALERE
 
6 Session Aerow - New experience and SharePoint framework
6   Session Aerow - New experience and SharePoint framework6   Session Aerow - New experience and SharePoint framework
6 Session Aerow - New experience and SharePoint frameworkaOS Community
 
DevoxxFR Présentation des portails en 2014
DevoxxFR Présentation des portails en 2014DevoxxFR Présentation des portails en 2014
DevoxxFR Présentation des portails en 2014Stéphane Liétard
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Hidora
 
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Vincent Biret
 
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...Modern Workplace Conference Paris
 
Intégrer Lync dans vos applications métiers, ou le contraire
Intégrer Lync dans vos applications métiers, ou le contraireIntégrer Lync dans vos applications métiers, ou le contraire
Intégrer Lync dans vos applications métiers, ou le contraireMicrosoft Ideas
 
Workflow et bcs sous share point 2013
Workflow et bcs sous share point 2013Workflow et bcs sous share point 2013
Workflow et bcs sous share point 2013Nabil Babaci
 
Workflow et bcs sous SharePoint 2013
Workflow et bcs sous SharePoint 2013Workflow et bcs sous SharePoint 2013
Workflow et bcs sous SharePoint 2013Nabil Babaci
 

Similar to Multitenancy avec JPA ou Hibernate (20)

DocAve, une plateforme pour accélérer l’adoption et sécuriser l’usage de shar...
DocAve, une plateforme pour accélérer l’adoption et sécuriser l’usage de shar...DocAve, une plateforme pour accélérer l’adoption et sécuriser l’usage de shar...
DocAve, une plateforme pour accélérer l’adoption et sécuriser l’usage de shar...
 
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
 
Jouve Open Search
 Jouve Open Search Jouve Open Search
Jouve Open Search
 
Démonstration : Comment la plateforme Denodo permet d'accélérer l'analyse de ...
Démonstration : Comment la plateforme Denodo permet d'accélérer l'analyse de ...Démonstration : Comment la plateforme Denodo permet d'accélérer l'analyse de ...
Démonstration : Comment la plateforme Denodo permet d'accélérer l'analyse de ...
 
Mobile-Chp4 côté serveur
Mobile-Chp4 côté serveurMobile-Chp4 côté serveur
Mobile-Chp4 côté serveur
 
Global Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
Global Office Bootcamp Montreal 2018 Introduction au Microsoft GraphGlobal Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
Global Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
 
Azure Policy: Un outil pour la gouvernance
Azure Policy: Un outil pour la gouvernanceAzure Policy: Un outil pour la gouvernance
Azure Policy: Un outil pour la gouvernance
 
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
 
Présentation GLPI aux RMLL 2017
Présentation GLPI aux RMLL 2017Présentation GLPI aux RMLL 2017
Présentation GLPI aux RMLL 2017
 
7 Session Aerow - New experience and SharePoint Framework
7   Session Aerow - New experience and SharePoint Framework7   Session Aerow - New experience and SharePoint Framework
7 Session Aerow - New experience and SharePoint Framework
 
aOS Genève - Session - New Experience & SharePoint Framework
aOS Genève - Session - New Experience & SharePoint FrameworkaOS Genève - Session - New Experience & SharePoint Framework
aOS Genève - Session - New Experience & SharePoint Framework
 
aOS Toulouse - Session - New Experience & SharePoint Framework
aOS Toulouse - Session - New Experience & SharePoint FrameworkaOS Toulouse - Session - New Experience & SharePoint Framework
aOS Toulouse - Session - New Experience & SharePoint Framework
 
6 Session Aerow - New experience and SharePoint framework
6   Session Aerow - New experience and SharePoint framework6   Session Aerow - New experience and SharePoint framework
6 Session Aerow - New experience and SharePoint framework
 
DevoxxFR Présentation des portails en 2014
DevoxxFR Présentation des portails en 2014DevoxxFR Présentation des portails en 2014
DevoxxFR Présentation des portails en 2014
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks
 
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
 
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
 
Intégrer Lync dans vos applications métiers, ou le contraire
Intégrer Lync dans vos applications métiers, ou le contraireIntégrer Lync dans vos applications métiers, ou le contraire
Intégrer Lync dans vos applications métiers, ou le contraire
 
Workflow et bcs sous share point 2013
Workflow et bcs sous share point 2013Workflow et bcs sous share point 2013
Workflow et bcs sous share point 2013
 
Workflow et bcs sous SharePoint 2013
Workflow et bcs sous SharePoint 2013Workflow et bcs sous SharePoint 2013
Workflow et bcs sous SharePoint 2013
 

Multitenancy avec JPA ou Hibernate

  • 1. Multitenancy avec CDI+JPA ou Spring+Hibernate Florian Beaufumé 06/2015
  • 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. App 1 Base 1 App 2 Base 2 App Base 1 Base 2 Single-tenant Multitenant Multitenancy
  • 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. • 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. Existant CDI Spring JPA Hibernate Spécification Java EE Produit Injection de dépendance Mapping objet relationnel Implémente
  • 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. • 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. 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. • 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
  • 12. • Plusieurs stratégies possibles • Tests unitaires : mocking • Tests d'intégration : • CDI+JPA : Arquillian • Spring+Hibernate : JTA avec Atomikos Tests