2011-08-31 7 views
10

यह मुझे लगता है कि support for multi tenancy has been added to hibernate अब लगभग छह महीने और updated at least once since के लिए है।जेपीए के साथ हाइबरनेट 4 में बहु-किरायेदारी कैसे सक्षम करें?

यह जेपीए के बाहर एक बहु-टेनेंट सत्र प्राप्त करने के लिए काफी तुच्छ दिखता है:

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

लेकिन आप इसे कैसे जेपीए के माध्यम से हाइबरनेट उपयोग करने वाले ऐप्लिकेशन में सक्षम होगा? (अगर संभव हो तो)।

अग्रिम धन्यवाद।

+1

आपके दोनों लिंक काम नहीं कर रहे हैं। यदि आप उन्हें वापस जोड़ते हैं तो यह बहुत अच्छा होगा? –

उत्तर

7

आप persistence.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" /> 

आप बहु किरायेदारी रणनीति hibernate.multi_tenant_connection_provider की जरूरत नहीं है के रूप में SCHEMA का उपयोग करते हैं।

आप इन गुणों को अपने कोड में भी सेट कर सकते हैं और उन्हें मानचित्र में Persistence.createEntityManagerFactory() पर भेज सकते हैं। इस मामले में आप ऑब्जेक्ट इंस्टेंस पास कर सकते हैं, केवल क्लास नाम नहीं।

Hibernate documentation में अधिक जानकारी।

5

EntityManager.getDelegate() अंतर्निहित SessionImpl वापस आ जाएगा।

+0

जो सत्रफैक्टरी के लिए उपलब्ध नहीं है हालांकि – Bozho

+1

'सत्र Impl tmpsession = (सत्र Impl) entityManager.getDelegate(); सत्र फैक्ट्री सत्र फैक्टरी = tmpsession.getSessionFactory(); सत्र सत्र = sessionFactory.withOptions()। किरायेदार इंडेंटिफायर ("jboss") .openSession(); ' – bpgergo

+0

एचएम, दाएं। उस बारे में भूल गए – Bozho

संबंधित मुद्दे