[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-5697) Support for multi-tenancy
Steve Ebersole (JIRA)
noreply at atlassian.com
Wed Feb 16 10:33:05 EST 2011
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=39987#action_39987 ]
Steve Ebersole commented on HHH-5697:
-------------------------------------
We need a way to allow developers to tell Hibernate the {{tenant_id}} column without having a corresponding entity attribute. So most likely a piece of entity-level metadata. Perhaps:
{code}
@Entity
@TenantDiscriminator(column="tenant_id")
public class SomeEntity {...}
{code}
In the "separate schema" scenario, all mapped entities must be available via the tenant Connection. In the "discriminator" scenario however it is not necessarily a requirement for all the entities to be discriminated by tenant (reference data, countries, etc). The reason I mention that is because the above syntax gives the impression that multi-tenancy can be decided entity-by-entity which is simply not a truth across both strategies.
> Support for multi-tenancy
> -------------------------
>
> Key: HHH-5697
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5697
> Project: Hibernate Core
> Issue Type: New Feature
> Components: core
> Reporter: Steve Ebersole
> Fix For: 4.0.0.Alpha2
>
>
> Thinking that all that is really needed here is the ability to tell the {{Session}} (session creation options?) which tenant it is for. Then, this could be "handled" or "applied" by the {{ConnectionProvider}}
> For example:
> {code}
> Session s = ...;
> s.setTenant( "customer1" );
> {code}
> or somehow passed along to the {{openSession}} call.
> Then this could be passed to the {{ConnectionProvider}}, or maybe the {{Session}} itself is passed along:
> {code}
> public interface ConnectionProvider {
> ...
> public Connection getConnection(String tenant);
> }
> {code}
> or
> {code}
> public interface ConnectionProvider {
> ...
> public Connection getConnection(Session session);
> }
> {code}
> or even another:
> {code}
> public interface ConnectionProvider {
> ...
> public static interface ConnectionOptions {
> public String getTenant();
> ...
> }
> public Connection getConnection(ConnectionOptions options);
> }
> {code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list