Spring JDBC 和 Firebird 数据库

Lyn*_*don 3 firebird spring jdbc

有人真的使用 Firebird 2.1 和 Spring JDBC 吗?

出于测试目的,我在 MySQL、Postgres 和 Firebird 中设置了三个简单的单表数据库。

我在连接 MySQL 或 Postgres 并获取数据时没有任何问题。

但我就是无法让 Firebird 工作。

我需要更改的只是 jdbc.properties 和 pom.xml 依赖项以获得正确的 .jar 文件。就是这么简单。

我知道我的连接参数对于 Firebird 数据库来说是正确的,因为我已经在最小的 Java 命令程序中检查了它们。我已经通过这种方式连接并读取数据。

我得到了 Firebird 的 StackTrace:

org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取 JDBC 连接;嵌套异常是 org.apache.commons.dbcp.SQLNestedException:无法加载 JDBC 驱动程序类“org.firebirdsql.jdbc.FBDriver”,原因:javax/resource/ResourceException,原因:javax/resource/ResourceException org.springframework.jdbc.datasource .DataSourceUtils.getConnection(DataSourceUtils.java:80) org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:572)

很奇怪,我猜是某种冲突……

我想使用 Firebird,因为它是一个非常简单的数据库,但除非我解决这个问题,否则它将是 Postgres。

任何正确方向的帮助或指示将不胜感激。

Lyn*_*don 5

好的,具体方法如下:

将以下内容添加到您的 pom.xml (两者都需要):

    <dependency>
        <groupId>org.firebirdsql.jdbc</groupId>
        <artifactId>jaybird</artifactId>
        <version>2.1.6</version>
    </dependency>
    <dependency>
        <groupId>javax.resource</groupId>
        <artifactId>connector-api</artifactId>
        <version>1.5</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

将 ApplicationContext 文件中的数据源设置为:

<bean id="dataSource"
    class="org.firebirdsql.pool.FBWrappingDataSource"
    p:database="${jdbc.database}" 
    p:userName="${jdbc.username}"
    p:password="${jdbc.password}" 
    p:type="${jdbc.connection.type}" 
    p:maxPoolSize="5" 
    p:minPoolSize="1"
    p:pooling="true" />
Run Code Online (Sandbox Code Playgroud)

请注意,它使用 Firebird 特定池,而不是像其他数据库那样使用 org.apache.commons.dbcp.BasicDataSource。

请注意非标准参数名称。

这是我的 jdbc.properties 文件:

jdbc.driverClassName=org.firebirdsql.jdbc.FBDriver
jdbc.dialect=org.hibernate.dialect.FirebirdDialect
jdbc.database=/path/to/database.fdb
jdbc.username=admin
jdbc.password=*****
jdbc.defaultAutoCommit=false
jdbc.connection.type=TYPE4
Run Code Online (Sandbox Code Playgroud)

我还不知道如何关闭自动提交。抱歉,我正在尝试找出答案。

为什么 Firebird 不像其他数据库那样将其设为标准?那么更多的人可能会使用这个很棒的小数据库......