【问题标题】:HikariCP Address Specification and DocumentationHikariCP 地址规范和文档
【发布时间】:2018-01-24 23:49:40
【问题描述】:

因此,在 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 的情况下做到这一点?

感谢您的帮助。

【问题讨论】:

  • 您链接到的那个页面是文档,该页面以及也从该页面链接的wiki。但是您的问题不清楚,似乎需要外部资源并且也太宽泛了,因为除了询问如何在 SQLite 中使用它之外,您还会立即跳到询问性能提示等。请编辑您的问题以专注于一个特定的问题问题,例如显示您将如何配置连接没有 HikariCP。
  • 感谢您的提示。这是我在 StackOverflow 上的第一个问题,我试图回答我所有的问题。在我的链接作为文档的情况下,它似乎相对缺乏;虽然下面的问题告诉我,我需要了解更多关于特定驱动程序的信息。
  • 你不应该试图把所有东西都放在一个问题上,集中在一个问题上的问题会得到更好的答案。至于文档,HikariCP 有很好的文档(或者至少我见过更糟糕的文档),它根本无法解决所有问题,尤其是在需要如何配置来自其他驱动程序的内容时。
  • 哈哈是的,我现在意识到我应该多问一些尖锐的问题而不是几个。另外,我所说的相对缺乏的意思是大部分文档都由驱动程序本身决定。我现在确实意识到我应该查看特定的驱动程序文档。谢谢大家的帮助:)

标签: java mysql sqlite jdbc hikaricp


【解决方案1】:

当您使用 DataSource 样式而不是 URL 样式配置时,所有数据源属性都会转换为 DataSource 类上的 setter。因此,由于您似乎使用的是 org.sqlite.SQLiteDataSource,因此该类上的各种设置器都是相关的。

这是一个示例,不仅可以设置 DataSource 的 URL,还可以设置 Journal Mode 并启用完整的列名支持。

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 连接字符串可能会变得非常长(某些驱动程序需要数百个字符),这使得阅读/理解实际设置的属性非常麻烦。

【讨论】:

  • 所以我确实需要指定一种 JDBC URL,而不是简单地向它添加属性地址。谢谢你的回答;它实际上彻底回答了我所有的问题,即使它不是故意的。
  • 一些驱动程序有数据库名称、主机、端口等设置器,而不是 URL。 SQLite 没有。这一切都取决于 DataSource 的实现。
猜你喜欢
  • 2014-02-15
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 2010-11-26
  • 2016-12-22
相关资源
最近更新 更多