2013-09-03 18 views
12

persistence.xml dosyasında kalıcılık birimleri, uygulama oluşturulurken oluşturulur. Çalışma zamanında veritabanı url'sini değiştirmek istediğimde, çalışma zamanında kalıcılık birimini değiştirmenin herhangi bir yolu var mı? Dağıtıldıktan sonra önceden bağlanmış olandan farklı bir veritabanı kullanmam gerekiyordu. Sana bir Plug-in-Framework oluşturmalıdır Uzun ömürlü Oturum Mimarlık yılında EclipseLink (JPA 2.1)Kalıcı Birimi Değiştirme Dinamik - JPA

+0

Sunucu kullanıyor musunuz? –

+0

Nop. Bu bağımsız bir uygulamadır. Veritabanı sunucuları Oracle-12c ve SQL Server 9.0.x –

cevap

25

Kalıcı birim dosyasını (Persistence.xml) olduğu gibi bırakın. İçindeki özellikleri aşağıdaki gibi geçersiz kılabilirsiniz.

EntityManagerFactory managerFactory = null; 
Map<String, String> persistenceMap = new HashMap<String, String>(); 

persistenceMap.put("javax.persistence.jdbc.url", "<url>"); 
persistenceMap.put("javax.persistence.jdbc.user", "<username>"); 
persistenceMap.put("javax.persistence.jdbc.password", "<password>"); 
persistenceMap.put("javax.persistence.jdbc.driver", "<driver>"); 

managerFactory = Persistence.createEntityManagerFactory("<current persistence unit>", persistenceMap); 
manager = managerFactory.createEntityManager(); 
0

kullanıyorum

. Bu nedenle farklı bir Thread-Group ve Class-Repository oluşturmanız gerekir.

Bu (genellikle bir URLClassLoader içerir Entitys) sizin Sınıf-Loader-Ağaç

  • Sistem Sınıf-Yükleyici olmak
    • JPA-Sınıf-Loader
      • sizin JPA yükleyin olabilir .jar, persistence.xml ile birlikte, Application-Class-Loader'dan Veritabanı Yapılandırmasını belirtin
      • EntityManager/oturum-fabrikanızı belirleyin.
      • DataBase ile çalışması gereken herhangi bir eklentiyi yükleyin. Birim Testlerini (; D) ve Eklenti Entegrasyon Testlerini yürütün.
2

Sen veritabanı URL ve diğer ayarları seçmek için özelliklerini geçmek Persistence.createEntityManagerFactory (Map) kullanabilir.

+0

Sesler iyi. Bunu deneyeyim. –