我想用一段时间测试我的实体一个特殊的数据源
https://code.google.com/p/datasource-proxy/
包装原始数据源(在我的情况下是apache derby的)ClientDataSource
那么如何在没有容器的情况下将数据源注入我的JPA ......?
我尝试使用simple-jndi但不起作用。 (不是使用JPA2的eclipse链接实现)
在配置持久性单元时,有没有办法绕过数据源的JNDI?
(以编程方式?)
感谢。
答案 0 :(得分:1)
我找到了EclipseLink JPA实现的方法
import org.eclipse.persistence.config.PersistenceUnitProperties;
//define your datasource before proxyDS - not shown here
//then add this property to entity manager factory prop map
emfProps.put(PersistenceUnitProperties.NON_JTA_DATASOURCE, proxyDS);
EntityManagerFactory emf = Persistence.createEntityManagerFactory("CompanyPU", emfProps);
EntityManager em = emf.createEntityManager();
我仍然希望为任何JPA提供程序找到更通用的方法
答案 1 :(得分:0)
如果要在不使用容器或JNDI查找的情况下按程序设置dataSource,则可以使用以下包含Apache Derby ClientDataSource的方法:
public DataSource createDataSource() {
ClientDataSource dataSource = new ClientDataSource();
dataSource.setServerName("localhost");
dataSource.setPortNumber(1527);
dataSource.setDatabaseName("mytestdb");
dataSource.setUser("myusername");
dataSource.setPassword("mypasswd");
return dataSource;
}
然后,您可以将此代码放在应用程序中以获取JDBC连接:
Connection connection = dataSource.getConnection("myusername", "mypasswd");