2013-09-03 6 views
12

Les unités de persistance dans persistence.xml sont créées lors de la création de l'application. Comme je veux changer l'url de base de données à l'exécution, est-il possible de modifier l'unité de persistance à l'exécution? Je supposé utiliser une base de données différente de celle pré-reliée après distribuée.Modification dynamique de l'unité de persistance - JPA

J'utilise EclipseLink (JPA 2.1)

+0

Utilisez-vous un serveur? –

+0

Nop. C'est une application autonome. Les serveurs de base de données sont Oracle-12c et SQL Server 9.0.x –

Répondre

25

Vous pouvez remplacer les propriétés dans celui-ci comme suit.

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

En session de longue durée d'architecture, vous devez créer un plug-in-cadre.

Par conséquent, vous devez créer un autre groupe de threads et référentiel de classe.

Ce pourrait être votre classe Loader-Tree

  • système classe-Loader (généralement un URLClassLoader, contient le Entitys)
    • JPA-Class-Loader
      • Chargez votre JPA .jar avec persistence.xml à l'intérieur, spécifiez la configuration de la base de données à partir de l'application-classe-chargeur
      • Instanciez votre entityManager/session-factory.
      • Chargez tout plug-in dont vous avez besoin pour travailler avec la base de données. Exécuter des tests unitaires (; D) et des tests d'intégration de plug-in.
2

Vous pouvez utiliser Persistence.createEntityManagerFactory (carte) pour passer des propriétés à choisir l'URL de base de données et d'autres paramètres. Conserver le fichier d'unité de persistance (Persistence.xml) tel quel.

+0

Sonne bien. Laisse-moi essayer ça. –

Questions connexes