2024年Clojure状态调查!中分享您的想法。

欢迎!有关如何工作的更多信息,请参阅关于页面。

0
java.jdbc

在java.jdbc中,当使用原始连接uri时,无法传递属性,且这些属性必须是uri的一部分,只有用户名和密码除外,因为DriverManager构造函数专门接受用户名和密码。然而,DriverManager确实提供了一个其他构造函数,可以提供任何属性,包括用户名和密码。是否可以使用该构造函数?以下是一个改进示例:https://github.com/dmcgillen/java.jdbc/commit/95edd36997320d8dc6882ea371d88c901e49f465#diff-3a9a3475f16407a50d922fad53957b01L293

为此,情况是,自从我开始使用AWS Secrets Manager JDBC包装器以来有所出现,该包装器将secret id作为连接uri。我仍然希望提供其他JDBC属性,但它们应按照上述更改提供,因此支持以这种方式传递属性似乎是个好主意。

如果应该在这里发表而不是创建一个JIRA,请告诉我,我可以这样操作(如果这个改变是一个好主意的话)。

谢谢

1 答案

+1

已选定
 
最佳答案

根据 clojure.java.jdbc 的说明:该项目现在是“稳定”版本(不再是“活跃”)。它已被 seancorfield/next.jdbc 取代。

next.jdbc 在创建数据源和连接方面采用了不同的方法,所以我认为你也会遇到类似的问题,但在那个项目中我会乐意解决这个问题。可以在那里创建一个 GitHub 事务进行讨论。

https://github.com/seancorfield/next-jdbc/issues/66

我认为允许包含 :jdbcUrl 的 db-spec(这与 ->pool 用法相匹配)可以为这个问题提供解决方案。
seancorfield/next.jdbc 1.0.8 已发布在 Clojars,并增加了这个新特性。
真遗憾,看来我刚刚错过了这个机会!感谢你迅速将其添加到 next.jdbc 中,好知道当我们开始使用它时会得到支持。
为了其他人的方便,只需使用 Clojure.java.jdbc 支持的数据源。我们已经处于使用连接池的地方,但是有一些应用程序没有使用连接池,但它们仍然可以通过数据源工作。

对于这些应用程序,我们使用 next.jdbc 的 get-datasource 函数来创建数据源(其中包含上述更改,因此我们可以使用具有属性的 jdbc uri,感谢!),但是使用该数据源与 clojure.java.jdbc,直到我们可以迁移时为止。
很高兴它对你有用,Donovan!我们也是一个混合了 c.j.j. / next.jdbc 的商店,并且为所有(遗留)代码都使用了 c3p0 连接池,所以我们只需将 (:datasource pooled-db) 传递给 next.jdbc 函数。
...