TL; DR:
是否有没有Oracle JDBC驱动程序的通过JDBC连接到Oracle DB的方法?还是其他任何方式(例如休眠)?
完整的故事:
我们有一个现有的Spring Boot应用程序,该应用程序使用OJDBC驱动程序连接到Oracle 11c数据库实例。 Spring Boot内部使用JdbcTemplate执行一些插入和选择,基本上是5或6种类型的语句。从技术上讲,它运行良好。
但是,在一个有趣的情况下,我们构建的代码必须经过一系列检查(我们正在作为一家较大的国际公司的分包商进行工作),并且这些检查的一部分是许可证检查。 BlackDuck(https://www.blackducksoftware.com)用于报告解决方案中链接的每个库(在我们的案例中为280个左右),我们必须手动向每个库添加版权声明(例如:“版权©2005-2019 Apache软件基金会。保留所有权利。”)。我们在Oracle Driver中添加了Oracle Technology Network许可,但该国际公司的法律团队拒绝了该许可:
”“除非获得了使用Oracle数据库的实际许可(您不是),否则我们将不允许使用和分发Oracle JDBC驱动程序。这些驱动程序已获得Oracle Technology网络许可证的许可,并且必须遵守XXX(公司名称)指定Oracle为第三方受益人,这是我们法律部门所不允许的。因此,您必须找到在开源下获得许可的兼容替代产品。”
现在,我们显然正在设法解决此问题(看到正在接收该解决方案的最终客户端已安装了许可的Oracle DB,并且我们可以在公司的Nexus存储库中看到OJDBC驱动程序的早期版本),但是我想问一下,有没有一种方法可以在没有Oracle JDBC驱动程序的情况下通过JDBC连接到Oracle DB?还是其他任何方式(例如休眠)?据我所知,Oracle DB通信协议不是完全标准的,这就是为什么您需要Oracle驱动程序的原因。有我不知道的开源替代品吗?
答案 0 :(得分:1)
Oracle DB通信协议不仅是“不完全标准的”,而且对于SQL数据库的任何在线通信协议也根本没有SQL或JDBC标准,它们都是专有的。
我知道没有开源替代品,而且据我所知,该协议没有公开指定,因此没有Oracle的帮助。我们通过让拥有Oracle许可证的客户将驱动程序添加到他们的应用程序部署中来解决了类似的问题,这样我们就不会重新分发它,而正是他们使用了该驱动程序。
答案 1 :(得分:0)
是的,请使用其他人的驱动程序。 Progress例如。
就THIS驱动程序的质量或与您决定不使用我们的驱动程序的法律条款而言,我不是代表Oracle。但是,我们的Java应用程序驱动程序还有其他替代方法,这就是其中一种。