For info, I like #2 the best
ConnectionOptions can deal in the future with:
- schema based diff
- user based diff ala Oracle VPD
interface ConnectionOptions {
TenantType getTenantType();
String getDefaultSchema();
String getUser() //is that how VPD filters out?
..some more techniques later
}
enum TenantType {
NONE,
SCHEMA,
USER
}
With getTenantType, a ConnectionProvider can return the right connection or
yell if it does not support it. We could also imagine asking the
ConnectionProvider to return the array of supported tenantTypes so that we can
raise the exception at startup time.
On 22 mars 2011, at 22:21, Steve Ebersole wrote:
> reference http://opensource.atlassian.com/projects/hibernate/browse/HHH-5697
>
> For multi-tenancy implemented by sepaerate schema we need the ability to tell
> the ConnectionProvider about the tenant for the given getConnection()
> request.
> I really see 3 approaches to this:
>
> 1) Have 2 hierarchies here. The current ConnectionProvider contract remains
> the same. Add a new MultiTenantConnectionProvider with methods accounting
> for
> tenant
> 2) Just alter the ConnectionProvider contract to pass information in. If we
> go this route I prefer the "parameter object" pattern where we pass in
> ConnectionOptions interface (see issue).
> 3) Use contextual lookup. ConnentionProviders interested in (or capable of
> understanding) mulit-tenancy would perform some kind of "contextual"
> (ThreadLocal, etc) lookup for the needed information.
>
> Thoughts? Discussions?
>
> ---
> Steve Ebersole <[email protected]>
> http://hibernate.org
> _______________________________________________
> hibernate-dev mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
_______________________________________________
hibernate-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/hibernate-dev