From 2b356317ce13050e972a7750579993310735fbda Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Wed, 1 Feb 2012 12:23:47 -0600 Subject: [PATCH] HHH-7011 - Document multi-tenancy --- .../chapters/multi-tenancy/Multi_Tenancy.xml | 3 +- .../images/multitenacy_database.png | Bin 0 -> 25226 bytes .../images/multitenacy_database.svg | 130 ++++++++++++++++++ .../images/multitenacy_discriminator.png | Bin 0 -> 17029 bytes .../images/multitenacy_discriminator.svg | 70 ++++++++++ .../images/multitenacy_schema.png | Bin 0 -> 24676 bytes .../images/multitenacy_schema.svg | 126 +++++++++++++++++ 7 files changed, 328 insertions(+), 1 deletion(-) create mode 100644 documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_database.png create mode 100644 documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_database.svg create mode 100644 documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_discriminator.png create mode 100644 documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_discriminator.svg create mode 100644 documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_schema.png create mode 100644 documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_schema.svg diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/Multi_Tenancy.xml b/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/Multi_Tenancy.xml index 6b3c5d2d81..046d22ee88 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/Multi_Tenancy.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/Multi_Tenancy.xml @@ -162,7 +162,8 @@ Correlates to the partitioned (discriminator) approach. It is an error to attempt to open a - session without a tenant identifier using this strategy. + session without a tenant identifier using this strategy. This strategy is not yet implemented + in Hibernate as of 4.0 and 4.1. Its support is planned for 5.0. diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_database.png b/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_database.png new file mode 100644 index 0000000000000000000000000000000000000000..84822ec4e5b0dc76c00ce78a8a13d2cb637d36ae GIT binary patch literal 25226 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�%fsML5Y#Cd&+IKg3 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CUSTOMER ( +ID BIGINT, +NAME VARCHAR, +... +) +CUSTOMER ( +ID BIGINT, +NAME VARCHAR, +... +) +Application + + + + + + + + + + + diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_discriminator.png b/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_discriminator.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc3ad6ed9a1db5cfa3c580d31f33a1249fe2a46 GIT binary patch literal 17029 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 literal 0 HcmV?d00001 diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_discriminator.svg b/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_discriminator.svg new file mode 100644 index 0000000000..cb55a6671f --- /dev/null +++ b/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_discriminator.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CUSTOMER ( +ID BIGINT, +NAME VARCHAR, +... +TENANT_ID VARCHAR +) +Application + + + + + + diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_schema.png b/documentation/src/main/docbook/devguide/en-US/chapters/multi-tenancy/images/multitenacy_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..2756ba2ed605bb31594f2512829fc2517fda5916 GIT binary patch literal 24676 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CUSTOMER ( +ID BIGINT, +NAME VARCHAR, +... +) +CUSTOMER ( +ID BIGINT, +NAME VARCHAR, +... +) +Application + + + + + + + + + + + + + + + +