HikariCP地址规范和文档

时间:2017-08-16 18:03:51

标签: java mysql sqlite jdbc hikaricp

因此,在搜索了Google和Github的答案之后,我对大多数人如何使用HikariCP感到困惑。我似乎无法在HikariCP上找到任何直接的文档。

我的问题是:如何在没有JDBC URL的情况下指定主机地址? Github上的main page of HikariCP清楚地表明JDBC URL规范是可选的,而只是简单地使用HikariConfig #setDataSourceClassName(String)。但是,我对如何指定地址感到困惑,我无法在任何地方找到答案。与SQLite一样,我在哪里指定数据库文件应该到达的路径?

这是我目前的代码:

final HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setPoolName("SQLite");
hikariConfig.setDataSourceClassName("org.sqlite.SQLiteDataSource");

HikariDataSource ds = new HikariDataSource(hikariConfig);

如果我不使用HikariCP,我只需指定JDBC URL,如下所示: jdbc:sqlite:path/to/database.db。但是,如何在不使用JDBC URL的情况下执行此操作?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

当您使用DataSource样式而不是URL样式配置时,所有数据源属性都会转换为DataSource类上的setter。所以,既然你似乎在使用org.sqlite.SQLiteDataSource,那么该类上的各种setter就是相关的。

以下是不仅设置DataSource的URL,还设置日记帐模式并启用完整列名支持的示例。

final HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setPoolName("SQLite");
hikariConfig.setDataSourceClassName("org.sqlite.SQLiteDataSource");
hikariConfig.addDataSourceProperty("url", "jdbc:sqlite:C:/work/mydatabase.db");
hikariConfig.addDataSourceProperty("journalMode", "WAL");
hikariConfig.addDataSourceProperty("fullColumnNames", "true");

HikariDataSource ds = new HikariDataSource(hikariConfig);

这个原因DataSource风格更好是双重的:

  • 使用反射可确保属性名称中的任何拼写错误都会导致失败。然而,驱动程序通常会忽略在JDBC URL本身中指定的带有拼写错误的属性。
  • 当指定了大量属性时,JDBC URL连接字符串可能会变得非常长 - 某些驱动程序会产生几百个字符 - 这使得读取/理解实际设置的属性非常麻烦。