如何动态更改JPA连接

时间:2016-09-23 09:54:01

标签: java jpa singleton entitymanager

我使用JPA作为桌面软件。最终用户需要一个框架来通过更改persistance.xml数据动态(动态)更改数据库连接。我尝试使用下面的代码(我在这里找到)并进行了修改,但到目前为止还没有成功更改数据库连接。

EntityManagerFactory managerFactory = EntityManagerSingleton.getInstance().getEntityManagerFactory();
managerFactory = null;
Map<String, String> persistenceMap = new HashMap<String, String>();

persistenceMap.put("javax.persistence.jdbc.url", "jdbc:mysql://"+dbHost+":"+dbPort+"/"+dbName+"?zeroDateTimeBehavior=convertToNull");
persistenceMap.put("javax.persistence.jdbc.user", dbUser);
persistenceMap.put("javax.persistence.jdbc.password", dbPwd);
persistenceMap.put("javax.persistence.jdbc.driver","com.mysql.jdbc.Driver");

managerFactory = Persistence.createEntityManagerFactory("Persistance Unit Name", persistenceMap);
manager = managerFactory.createEntityManager();

我使用单例类来获取实体管理器工厂,因此它只创建一个与数据库的连接,并且只创建一个实体管理器工厂。在 managerFactory 之上 是单例类的返回值。那么有人能告诉我我做错了什么或更好的方法吗?

0 个答案:

没有答案