首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中使用HikariCp时如何指定特定于数据库的属性

在java中使用HikariCp时如何指定特定于数据库的属性
EN

Stack Overflow用户
提问于 2019-08-03 06:39:28
回答 3查看 4.1K关注 0票数 2

当通过HikariCP库启动数据库连接时,我需要添加oracle数据库属性,如下所示,但在网上找不到任何示例。

代码语言:javascript
复制
    oracle.jdbc.timezoneAsRegion=true
    oracle.jdbc.timestampTzInGmt=true
EN

回答 3

Stack Overflow用户

发布于 2020-08-05 16:05:43

这对我在Spring Boot 2.3.2.RELEASE中很有效

application.properties:

代码语言:javascript
复制
spring.datasource.hikari.data-source-properties.oracle.jdbc.timezoneAsRegion=true
spring.datasource.hikari.data-source-properties.oracle.jdbc.timestampTzInGmt=true

检查:

代码语言:javascript
复制
@Autowired
private DataSource dataSource;
:
logger.info(dataSource.getConnection().unwrap(OracleConnection.class).getProperties().getProperty("oracle.jdbc.timezoneAsRegion"));
logger.info(dataSource.getConnection().unwrap(OracleConnection.class).getProperties().getProperty("oracle.jdbc.timestampTzInGmt"));

输出:

true

真正的

票数 2
EN

Stack Overflow用户

发布于 2019-08-04 15:35:04

这就像在DataSource中添加新的addDataSourceProperty一样简单

代码语言:javascript
复制
public class DataSource {

    private static HikariConfig config = new HikariConfig();
    private static HikariDataSource ds;

    static {
        config.setJdbcUrl( "jdbc_url" );
        config.setUsername( "database_username" );
        config.setPassword( "database_password" );
        ....
        config.addDataSourceProperty( "oracle.jdbc.timezoneAsRegion" , "true" );
        config.addDataSourceProperty( "oracle.jdbc.timestampTzInGmt" , "true" );

        ds = new HikariDataSource( config );
    }

    private DataSource() {}

    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}

要验证连接中的设置,必须首先使用获取Oracle连接

代码语言:javascript
复制
def hkConn = DataSource.getConnection() 

def conn  = hkConn.unwrap(OracleConnection.class); 

println conn.getProperties().getProperty("oracle.jdbc.timezoneAsRegion");
println conn.getProperties().getProperty("oracle.jdbc.timestampTzInGmt");

它返回

代码语言:javascript
复制
true
true

使用HikariCP-2.7.2和Oracle 12.1进行测试

票数 1
EN

Stack Overflow用户

发布于 2019-08-04 02:41:08

你在用Spring Boot吗?

如果你使用的是Spring Boot,你可以尝试通过属性进行设置:

spring.datasource.hikari.*= # Hikari specific settings

https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

使用MySQL的属性文件的一个示例:

代码语言:javascript
复制
spring.datasource.hikari.mysql.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.hikari.mysql.jdbc-url=jdbc:mysql://10.0.9.198:3306/develop_report?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&rewriteBatchedStatements=true
spring.datasource.hikari.mysql.username=root
spring.datasource.hikari.mysql.password=123456
spring.datasource.hikari.mysql.minimum-idle=5
spring.datasource.hikari.mysql.idle-timeout=180000
spring.datasource.hikari.mysql.maximum-pool-size=20
spring.datasource.hikari.mysql.auto-commit=true
spring.datasource.hikari.mysql.pool-name=Mysql-spring.datasource.hikariCP
spring.datasource.hikari.mysql.max-lifetime=1800000
spring.datasource.hikari.mysql.connection-timeout=30000
spring.datasource.hikari.mysql.connection-test-query=SELECT 1
spring.datasource.hikari.mysql.validation-timeout=5000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57334139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档