Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在J2SE环境中的Hibernate JPA中使用OracleDataSource_Java_Oracle_Jpa_Jdbc - Fatal编程技术网

Java 在J2SE环境中的Hibernate JPA中使用OracleDataSource

Java 在J2SE环境中的Hibernate JPA中使用OracleDataSource,java,oracle,jpa,jdbc,Java,Oracle,Jpa,Jdbc,是否可以将Hibernate/JPA配置为在独立环境中使用OracleDataSource?更具体地说,我要做的是通过persistence.xml文件配置oracle隐式连接缓存。这可能吗 提前谢谢 Brian我最近在一个使用MySQL的JSE应用程序中解决了一个类似的问题。与您的情况一样,我需要它来使用现有的连接提供程序 在我的情况下,我使用了。这个连接池框架允许我在数据源上创建一个连接池,然后在persistence.xml文件中的JPA配置中使用一个假的驱动程序名注册该池 我就是这样做的

是否可以将Hibernate/JPA配置为在独立环境中使用OracleDataSource?更具体地说,我要做的是通过persistence.xml文件配置oracle隐式连接缓存。这可能吗

提前谢谢
Brian

我最近在一个使用MySQL的JSE应用程序中解决了一个类似的问题。与您的情况一样,我需要它来使用现有的连接提供程序

在我的情况下,我使用了。这个连接池框架允许我在数据源上创建一个连接池,然后在persistence.xml文件中的JPA配置中使用一个假的驱动程序名注册该池

我就是这样做的。首先,我基于原始数据源注册了一个连接池,并且为这个给定的池注册了一个假的驱动程序

private ObjectPool getNewConnectionPool(DataSource mySqlDataSource) {
    try {
        GenericObjectPool pool = new GenericObjectPool(null, 10); 
        pool.setTestOnBorrow(true);
        ConnectionFactory factory = new DataSourceConnectionFactory(mySqlDataSource);
        PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(factory, pool, null, "SELECT 1 FROM DUAL", false, true);
        Class.forName("org.apache.commons.dbcp.PoolingDriver");
        PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
        driver.registerPool("myPool", pool);
        return poolableConnectionFactory.getPool();
    } catch (Exception e) {
        throw new RuntimeException("Unable to initialize connetion pooling", e);
    }
}
然后,不再使用原始数据源,从现在起,我继续使用池数据源

DataSource dataSource = new PoolingDataSource(getNewConnectionPool(mySqlDataSource));
Connection conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:myPool");
到目前为止,您有一个基于原始数据源的功能数据源,您可以从中获得连接。您还可以通过为此池注册的假驱动程序获得连接,这些连接也将来自原始数据源

DataSource dataSource = new PoolingDataSource(getNewConnectionPool(mySqlDataSource));
Connection conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:myPool");
不仅如此,您还可以在persistence.xml文件中使用此URL来配置JPA连接的源或在创建EntityManagerFactory时提供给EntityManagerFactory的属性中

Map<String, Object> properties = new HashMap<String, Object>();
properties.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence");
properties.put("javax.persistence.jdbc.url", "jdbc:apache:commons:dbcp:myPool");
this.entityManagerFactory = Persistence.createEntityManagerFactory("myUnit", properties);
this.entityManager = this.entityManagerFactory.createEntityManager();
Map properties=newhashmap();
properties.put(“javax.persistence.provider”、“org.hibernate.ejb.HibernatePersistence”);
properties.put(“javax.persistence.jdbc.url”,“jdbc:apache:commons:dbcp:myPool”);
this.entityManagerFactory=Persistence.createEntityManagerFactory(“myUnit”,属性);
this.entityManager=this.entityManager工厂.createEntityManager();
使用这个JDBCURL,您现在可以访问池中的连接,并通过它访问原始数据源

DataSource dataSource = new PoolingDataSource(getNewConnectionPool(mySqlDataSource));
Connection conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:myPool");