Как включить multi-tenancy в Hibernate 4 с JPA?

Мне кажется, что в hibernate добавлена поддержка multi tenancy уже почти шесть месяцев и обновление по крайней мере один раз, поскольку.

Кажется довольно тривиальным получить сеанс с несколькими арендаторами за пределами JPA:

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

но как бы вы включили его в приложении, которое использует hibernate через JPA? (Если можно.)

спасибо заранее.

2 ответов


вы можете настроить его через свойства в упорстве.XML следующим образом:

<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" />

Если вы используете схему в качестве стратегии multi-tenancy hibernate.multi_tenant_connection_provider не требуется.

вы также можете установить эти свойства в своем коде и передать их на карте в Persistence.createEntityManagerFactory(). В этом случае вы можете передать экземпляр объекта, а не просто имя класса.

подробнее в Hibernate документация.


EntityManager.getDelegate() вернет базовый SessionImpl.