TL;博士:
有没有一种方法可以通过 JDBC 连接到 Oracle DB,而不需要 Oracle JDBC 驱动程序?或者任何其他方式(例如休眠)?
全文:
我们有一个现有的 Spring Boot 应用程序,它使用 OJDBC 驱动程序连接到 Oracle 11c 数据库实例。 Spring Boot内部使用JdbcTemplate来执行一些插入和选择,基本上是5或6种类型的语句。从技术上讲,它运行良好。
但是我们面临着一个有趣的情况,我们构建的代码必须经过一系列检查(我们是一家较大的国际公司的分包商),其中一部分检查是许可证检查。 BlackDuck ( https://www.blackducksoftware.com ) 用于报告解决方案中链接的每个库(在我们的例子中约为 280 个),我们必须手动向每个库添加版权声明(例如:“Copyright © 2005-2019 The Apache软件基金会。保留所有权利。”)。我们给Oracle Driver添加了Oracle技术网许可,被国际公司的法律团队拒绝了:
“除非我们实际获得使用 Oracle 数据库的许可(而您没有),否则我们不能允许使用和分发 Oracle JDBC 驱动程序。这些驱动程序已根据 Oracle 技术网络许可证获得许可,并且有义务XXX [公司名称] 将 Oracle 指定为第 3 方受益人,这是我们的法律部门不允许的。因此,您必须找到一个在开源许可下兼容的替代品。”
现在,我们显然正在尝试解决这个问题(因为接收解决方案的最终客户端安装了许可的 Oracle DB,并且我们可以在公司的 Nexus 存储库中看到早期版本的 OJDBC 驱动程序),但是我想问,有没有一种方法可以通过 JDBC 连接到 Oracle DB,而不需要 Oracle JDBC 驱动程序?或者任何其他方式(例如休眠)?据我所知,Oracle DB 通信协议(protocol)并不完全标准,这就是您需要 Oracle 驱动程序的原因。是否有我不知道的开源替代方案?
最佳答案
Oracle DB 通信协议(protocol)不仅“不完全标准”,对于 SQL 数据库的任何在线通信协议(protocol)根本没有 SQL 或 JDBC 标准,它们都是专有的。
据我所知,没有开源替代方案,而且没有 Oracle 的帮助就不可能存在,因为据我所知,该协议(protocol)尚未公开指定。我们通过让拥有 Oracle 许可证的客户将驱动程序添加到他们的应用程序部署中来解决类似的问题,这样我们就不会重新分发它,而他们就是使用它的人。
关于oracle - 我可以在没有 Oracle JDBC 驱动程序的情况下连接到 Oracle 数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226244/