2010-11-05 11 views
9

मेरे पास जेपीए 2 का उपयोग कर एक मानक मानक ईई 6 वेब एप्लिकेशन है जो एक MySQL डेटाबेस से कनेक्ट निर्भरता इंजेक्शन के साथ है और सब कुछ ठीक काम कर रहा है। मैं अब क्या करना चाहता हूं कि क्या यह एप्लिकेशन किसी अन्य साइट पर स्थापित अन्य अनुप्रयोगों के डेटाबेस से इंटरैक्ट करता है - अनिवार्य रूप से हमारे अन्य एप्लिकेशन इंस्टॉल के लिए नियंत्रण के एक बिंदु के रूप में कार्य करता है।गतिशील जेपीए कनेक्शन

मैं किसके साथ संघर्ष कर रहा हूं यह है कि अन्य डेटाबेस के साथ बातचीत करने के लिए सबसे अच्छा तरीका है। आदर्श रूप में मैं प्रत्येक इंस्टॉलेशन के लिए एंटीटी मैनेजर बनाना चाहता हूं और जेपीए का उपयोग करके बातचीत कर सकता हूं लेकिन मुझे इसे सेट करने का कोई तरीका नहीं दिख रहा है। उदाहरण के लिए, मैं एक एप्लिकेशन प्रकार के 5 इंस्टॉल (और इसलिए डेटाबेस) कर सकता हूं और मास्टर कंट्रोल एप्लिकेशन रनटाइम तक अन्य इंस्टॉलेशन के बारे में नहीं जान पाएगा। ऐसा लगता है कि एक EntityManager और सभी स्वचालित लेनदेन डेमैकेशन इत्यादि के निर्भरता इंजेक्शन का उपयोग करना बंद कर दिया गया है। वैकल्पिक विकल्प केवल डेटासोर्स बनाना और इंटरैक्शन को मैन्युअल रूप से करना है। लचीला होने पर इसे स्पष्ट रूप से बहुत अधिक प्रयास की आवश्यकता होती है।

तो, मेरा सवाल वास्तव में है कि मैं इस समस्या से कैसे निपटूं?

उत्तर

5

मैं भी इस में देख रहा हूँ, और अब तक मैं निम्न ब्लॉग पोस्ट है कि एक तरह से वर्णन करता है यह http://ayushsuman.blogspot.com/2010/06/configure-jpa-during-run-time-dynamic.html करने के लिए मिल गया है:

हटाया सभी अपने डेटाबेस से गुण persistance.xml

<persistence> 
<persistence-unit name="jpablogPUnit" transaction-type="RESOURCE_LOCAL"> 
<class>com.suman.Company</class> 
</persistence-unit> 
</persistence> 

जड़ proje में अपने जावा फ़ाइल जहां entityManager कॉन्फ़िगर कर रहे हैं

package com.suman; 

import java.util.HashMap; 
import java.util.Map; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 
import org.apache.log4j.Logger; 

/** 
* @author Binod Suman 
*/ 
public class TestApplication { 

Logger log = Logger.getLogger(TestApplication.class); 
public static void main(String[] args) { 
TestApplication test = new TestApplication(); 
test.saveCompany(); 
} 

public void saveCompany(){ 
log.info("Company data is going to save"); 
EntityManagerFactory emf; 
Map properties = new HashMap(); 
properties.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver"); 
properties.put("hibernate.connection.url", "jdbc:mysql://localhost:3306/sumandb"); 
properties.put("hibernate.connection.username", "root"); 
properties.put("hibernate.connection.password", "mysql"); 
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); 
properties.put("hibernate.show-sql", "true"); 
//emf = Persistence.createEntityManagerFactory("jpablogPUnit"); 
emf = Persistence.createEntityManagerFactory("jpablogPUnit",properties); 
EntityManager entityManager = (EntityManager) emf.createEntityManager(); 
entityManager.getTransaction().begin(); 
Company company = new Company(120,"TecnoTree","Espoo, Finland"); 
entityManager.persist(company); 
entityManager.getTransaction().commit(); 
log.info("Company data has been saved"); 
} 

} 
+0

persistance.xml बदल दिया TestApplication.java हमारे मामले में, सीटी? –

+0

@ ई-info128 सामान्य स्थान पर नहीं: src/main/resource/मेटा-आईएनएफ/persistence.xml (https://stackoverflow.com/questions/10871109/where-to-put-persistence-xml-in-library जार-का उपयोग कर-Maven) – AmanicA