我的应用程序,需要在运行时使用jpa连接多个数据库bcz你不知道db的名称和数据库的数量。它可能是一个db或五个。它是在运行时决定的。所以我在jpa中使用java代码进行连接。为此,我使用下面的代码获取连接并创建实体管理器
public EntityManager entityManagerFactory(String dbName)
BasicDataSource dbcpDataSource = new BasicDataSource();
dbcpDataSource.setDriverClassName("com.mysql.jdbc.Driver");
dbcpDataSource.setUrl("jdbc:mysql://localhost:3306/"+ dbName);
dbcpDataSource.setUsername("root");
dbcpDataSource.setPassword("root");
// Enable statement caching (Optional)
dbcpDataSource.setPoolPreparedStatements(true);
dbcpDataSource.setMaxOpenPreparedStatements(50);
// JPA properties
Map<String, Object> properties = new HashMap<>();
// This line will tell hibernate (JPA) to use DBCP
properties.put(AvailableSettings.DATASOURCE, dbcpDataSource);
properties.put("hibernate.c3p0.min_size", "5");
properties.put("hibernate.c3p0.max_size", "10");
properties.put("hibernate.c3p0.max_statements", "100");
properties.put("hibernate.c3p0.acquire_increment", "100");
properties.put("hibernate.c3p0.timeout", "300"); // 5mins
properties.put("hibernate.c3p0.idle_test_period", "100");
EntityManagerFactory factory = Persistence.createEntityManagerFactory("User", properties);
EntityManager entityManager = factory.createEntityManager();
return entityManager;
}
但我在这里遇到一个错误:
javax.persistence.PersistenceException:没有
的持久性提供程序EntityManager名为User
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
at com.howtodoinjava.demo.util.RootConfig.entityManagerFactory(RootConfig.java:86)
我知道这个问题bcz我没有在这里定义持久性单位。任何人都可以帮助我而不在xml中定义持久性单元。如何为多个数据库创建实体管理器。如果我的方式是错误的,请建议我如何为多个数据库创建多个实体管理器。