这是我的EntitymanagerFactory:
Map<String, Object> properties = new HashMap<>();
properties.put("provider", org.eclipse.persistence.jpa.PersistenceProvider.class);
properties.put("eclipselink.cache.shared.default", "false");
properties.put("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/na");
properties.put("javax.persistence.jdbc.user", "UserName");
properties.put("javax.persistence.jdbc.password", "Password");
EntityManagerFactory emfForJPAContainer = Persistence.createEntityManagerFactory("persistenceUnit"R, properties);
EntityManager em = emfForJPAContainer.createEntityManager();
em.setProperty("eclipselink.tenant-id","na");
现在,以下代码将userAccount保存为架构“na”:
em.getTransection().begin();
UserAccount ua = new UserAccount(userName, pass);
em.persist(ua);
em.getTransection().commit();
现在,以下内容将使用相同的EntityManager将用户帐户保存到架构“na_1”:
em.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/na_1");
em.getTransection().begin();
UserAccount ua = new UserAccount(userName, pass);
em.persist(ua);
em.getTransection().commit();
现在,当我在运行时中设置jdbc url时:
em.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/na_1");
是否使用na_1架构重新连接数据库? 它有效吗?或者它对性能有任何不良影响?
顺便说一句,我正在使用EclipseLink 2.6.1。
已编辑:这是我的persistence.xml文件:
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>Here goes all class path</class>
</persistence-unit>
答案 0 :(得分:0)
首先,您再次设置具有相同值的相同属性,因此它没有任何区别。 除此之外,如果您设置属性运行时而不是执行&#34; em.getTransection()。begin();&#34;而不是它将使用新属性,但如果在设置属性运行时后执行代码: em.setProperty(&#34; javax.persistence.jdbc.url&#34;,&#34; jdbc:mysql:// localhost:3306 / na_1&#34;); em.getTransection()开头();
它会覆盖运行时属性。