开发者

How to enable multi-tenancy in Hibernate 4 with JPA?

It looks to me as though support for multi tenancy has been added to hibernate for nearly six months now and updated at least once since.

It looks fairly trivial to obtain a multi-tenant Session outside of JPA:

Session session = sessionFactory.withOptions().tenantIdentifier( "jboss" ).openSession();

But how would you enable it in an application that uses hibernate via JPA? (If possible).

Thanks in ad开发者_开发知识库vance.


You can configure it via properties in persistence.xml as follows:

<property name="hibernate.multiTenancy" value="DATABASE"/>
<property name="hibernate.multi_tenant_connection_provider" value="com.example.MyConnectionProvider" />
<property name="hibernate.tenant_identifier_resolver" value="com.example.MyTenantIdResolver" />

If you use SCHEMA as multi-tenancy strategy hibernate.multi_tenant_connection_provider is not needed.

You can also set these properties in your code and pass them in a map to Persistence.createEntityManagerFactory(). In this case you can pass an object instance, not just a class name.

More info in Hibernate documentation.


EntityManager.getDelegate() will return underlying SessionImpl.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜