OrientDB-由连接池控制的JDBC驱动程序

OrientDB-由连接池控制的JDBC驱动程序,orientdb,Orientdb,我们正在将一些使用关系数据库的应用程序更改为OrientDB(2.1.9)。 这个事务将分小步进行,我们将首先从JDBC驱动程序方法开始,也许稍后我们将切换到本机实现 我们有一个基于Spring集成的应用程序,我们使用JDBC驱动程序将Oracle数据库更改为OrientDB 数据库连接由Tomcat 8连接池管理,事务行为由Spring的事务管理器处理: <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource

我们正在将一些使用关系数据库的应用程序更改为OrientDB(2.1.9)。 这个事务将分小步进行,我们将首先从JDBC驱动程序方法开始,也许稍后我们将切换到本机实现

我们有一个基于Spring集成的应用程序,我们使用JDBC驱动程序将Oracle数据库更改为OrientDB

数据库连接由Tomcat 8连接池管理,事务行为由Spring的事务管理器处理:

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="driverClassName" value="com.orientechnologies.orient.jdbc.OrientJdbcDriver" />
            ...
</bean>             

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
</bean>
JDBC驱动程序类包装器现在返回一个包装的连接: 公共类OrientJDBCDriverRapper扩展OrientJdbcDriver{

    public Connection connect(final String url, final Properties info) throws SQLException {
       if (!acceptsURL(url)) {
          throw new SQLException(DO_NOT_ACCEPT_URL_ERROR + url);
       }

       return new OrientJdbcConnectionWrapper(url, info);
    }
}

最后,连接池的配置现在使用包装的驱动程序:

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="driverClassName" value="x.y.z.driver.orientdb.OrientJdbcDriverWrapper" />
</bean>

正如所料,这是完美的,但我不完全确定这是正确的方法,因为我没有看到任何人与这个问题


另一方面,OrientDB文档确实建议在多线程环境中使用activateOnCurrentThread()

<bean id="dataSource" class="com.orientechnologies.orient.jdbc.OrientDataSource">
    <constructor-arg name="url" value="jdbc:orient:plocal:xx\\databases\\test" />   
    <constructor-arg name="username" value="xx"/>
    <constructor-arg name="password" value="xx"/>
    <constructor-arg name="info" ref="databaseProperties" />        
 </bean> 


<util:map id="databaseProperties" value-type="java.lang.String">
  <entry key="db.usePool" value="true" />
  <entry key="db.pool.min" value="1" />
  <entry key="db.pool.max" value="10" />      


注意:我通过OrientJDBC驱动程序使用OrientDB

OrientDB有自己的数据库池,可以轻松配置:

<bean id="dataSource" class="com.orientechnologies.orient.jdbc.OrientDataSource">
    <constructor-arg name="url" value="jdbc:orient:plocal:xx\\databases\\test" />   
    <constructor-arg name="username" value="xx"/>
    <constructor-arg name="password" value="xx"/>
    <constructor-arg name="info" ref="databaseProperties" />        
 </bean> 


<util:map id="databaseProperties" value-type="java.lang.String">
  <entry key="db.usePool" value="true" />
  <entry key="db.pool.min" value="1" />
  <entry key="db.pool.max" value="10" />      

注意:我通过OrientJDBC驱动程序使用OrientDB