如何配置Oracle';使用MyBatis的数据库网络加密?

如何配置Oracle';使用MyBatis的数据库网络加密?,oracle,encryption,jdbc,connection,mybatis,Oracle,Encryption,Jdbc,Connection,Mybatis,我需要使用Mybatis作为持久性框架来加密web服务器和数据库服务器之间传输的数据 数据库服务器是Oracle 12c企业版12.1.0.2.0-64位。我正在使用ojdbc7.jar驱动程序 我能够建立一个加密连接,如这里所述。然而,我无法通过MyBatis做到这一点。我正在mybatis-config.xml文件中设置连接属性。以下是该文件的内容: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration

我需要使用Mybatis作为持久性框架来加密web服务器和数据库服务器之间传输的数据

数据库服务器是Oracle 12c企业版12.1.0.2.0-64位。我正在使用ojdbc7.jar驱动程序

我能够建立一个加密连接,如这里所述。然而,我无法通过MyBatis做到这一点。我正在mybatis-config.xml文件中设置连接属性。以下是该文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC '-//mybatis.org//DTD Config 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-config.dtd'>

<configuration>
<settings>
    <setting name="lazyLoadingEnabled" value="false" />
    <setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<environments default="development">     
    <environment id="development">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="oracle.jdbc.OracleDriver"/>
            <property name="url" value="jdbc:oracle:thin:@//<server>:<port>/<service>"/>
            <property name="username" value="<username>"/>
            <property name="password" value="<password>"/>
            <property name="poolMaximumActiveConnections" value="20"/>
            <property name="poolMaximumIdleConnections" value="10"/>
            <property name="poolMaximumCheckoutTime" value="180000"/>
            <property name="poolPingQuery" value="select 0 from dual"/>
            <property name="poolPingEnabled" value="true"/>
            <property name="poolPingConnectionsNotUsedFor" value="1800000"/>
            <property name="CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL" value="REQUIRED"/>
            <property name="CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES" value="AES256"/>
        </dataSource>
    </environment>
</environments>
</configuration>

最后两个属性元素是我配置加密连接的尝试。没有它们,我可以在没有加密的情况下成功连接。对于最后两个属性元素,我只得到一个错误:

原因:org.apache.ibatis.exceptions.PersistenceException:### 生成SqlSession时出错。####SQL映射程序中可能存在此错误 配置###原因:org.apache.ibatis.builder.BuilderException: 分析SQL映射程序配置时出错。原因: org.apache.ibatis.datasource.DataSourceException:未知数据源 属性:连接\u属性\u精简\u网络\u加密\u类型


有人知道如何解决这个问题吗?

JDBC属性的名称不太正确。请注意,可以在oracle.jdbc.OracleConnection下的JavaDoc中找到它们。你可以试试这些:

编辑:正如Chris在本评论中所解释的,MyBatis要求驱动程序的属性名称前缀为“driver”



我找到了丢失的东西。我问了MyBatis用户组的问题,Jeff Butler告诉我,您必须在特定于驱动程序的属性前面加上“driver”当我这么做的时候,它成功了@Jean,你离正确答案太近了,如果你只需修改你的答案,我会检查你的答案是否正确。此外,您还需要在元素的末尾添加结束标记“/>”。就可以了。谢谢
<property name="driver.oracle.net.encryption_client" value="REQUIRED"/>
<property name="driver.oracle.net.encryption_types_client" value="(AES256)"/>