首页 > 编程问答 >IBM DB2 和 Oracle SQLJ 翻译器在哪里?

IBM DB2 和 Oracle SQLJ 翻译器在哪里?

时间:2024-06-12 21:45:41浏览次数:23  
标签:java db2 oracle-sqldeveloper ojdbc sqlj

一年前我一直在开发一个 Java 项目,并使用 Codehaus Mojo SQLJ Plugin 将 .sqlj 文件翻译为可访问的 Java 类。由于我保存了旧的版本库,我看到以下 <plugin> 被插入到我的 pom.xml 中:

<plugin>
?
<build>;
    <插件>;
        <plugin>;
            <groupId>org.codehaus.mojo</groupId>;
            <artifactId>sqlj-maven-plugin</artifactId>;
            版本>1.3</version>;
            执行>;
                执行>;
                    目标>;
                        <目标>sqlj</目标>;
                    </goals>;
                    <配置>;
                        <sqljDirs>;
                            <sqljDir>src/main/sqlj/</sqljDir>;
                        </sqljDirs>;
                        <generatedSourcesDirectory>../sales-persistance/src/main/java</generatedSourcesDirectory>;
                            <生成的资源目录>./sales-persistance/src/main/resources/ro/ibm/sqlj</生成的资源目录>;
                    配置>;
                </execution>;
            </executions>;
            <dependencies>;
                依赖关系>;
                    <groupId>com.ibm.db2</groupId>;
                    <artifactId>sqlj4</artifactId>;
                    <version>4.29.29</version>;
                </dependency>;
            </dependencies>;
        </plugin>;
    </plugins>;
</build>;

它使用 com.ibm.db2:sqlj4 依赖关系进行 sqlj 翻译。根据我的研究,SQLJ 可使用两种翻译器之一进行翻译:IBM 或 Oracle 的翻译器。根据他们的文档,此类翻译器仅随数据库一起提供(例如,Oracle 随数据库 23c 一起提供,等等),而不是作为独立的软件包提供。

一年前,该com.ibm.db2:sqlj4翻译器在 MavenCentral 上可用现在,它已不再可用在 GitHub 上找到的旧项目中,Oracle 也有一个不带数据库客户端的 SQLJ 翻译器 (com.oracle:sqlj),但我似乎无法在任何 Maven 资源库中找到它。

为什么我再也找不到独立版本的翻译器?此外,是否有可能下载 jar 文件并通过 pom.xml 将其添加到本地?Oracle 和 IBM 没有为这些翻译器提供任何下载链接。


你观察到的情况是正确的。过去,像 com.ibm.db2:sqlj4 这样的 SQLJ 翻译器可以独立获得并被包含在 Maven Central 等存储库中。但是,现在情况已不再如此。

这些翻译器不再作为独立组件提供的主要原因有以下几点:

  • 与数据库版本的紧密耦合: SQLJ 翻译器与特定的数据库版本紧密相连。将它们作为独立组件发布会带来兼容性挑战,并可能导致在将代码部署到不同数据库版本时出现问题。
  • 许可和分发: Oracle 和 IBM 可能希望将这些翻译器作为其数据库产品的一部分进行许可和分发,而不是作为单独的组件提供。这使他们能够更好地控制使用情况并将其与他们的数据库产品捆绑销售。
  • 转向替代技术: 近年来,开发人员已经转向 JPA(Java Persistence API)和 Hibernate 等替代技术来进行持久性管理。这些技术提供了更标准化和更便携的数据库访问方法。

如何解决此问题

不幸的是,你无法再轻松下载独立的 SQLJ 翻译器 jar 文件并将其包含在你的 pom.xml 中。你必须采取以下方法之一:

  1. 将翻译器包含在你的数据库安装中: 正如你所提到的,Oracle 和 IBM 在他们的数据库产品中包含了 SQLJ 翻译器。如果可以访问数据库安装,则可以从那里引用翻译器 jar 文件。但这会将你的项目绑定到特定的数据库版本和供应商。

  2. 探索替代技术: 如果可能的话,请考虑迁移到 JPA 或 Hibernate 等替代持久性技术。这些技术得到了广泛的支持,并提供了更标准化和更便携的数据库访问方法。

  3. 调查社区驱动的解决方案: 可能存在由社区领导的努力来提供独立的 SQLJ 翻译器。但是,这些解决方案可能无法获得正式的支持或维护。

结论

不幸的是,那些独立的 SQLJ 翻译器时代已经一去不复返了。你最好的选择是评估你的选择,并确定最适合你的项目需求和限制的方法。

标签:java,db2,oracle-sqldeveloper,ojdbc,sqlj
From: 78477884

相关文章

  • 黑马20天java-1/2天
    1.计算机中存储数据的单位是字节(byte),每个字节是由8位(bit)组成。2.人机交互方式:图形化界面(消耗内存+运行速度慢)+命令行3.常用的dos命令4.Path环境变量:可以理解为系统中的一个大管家,帮我们记录了很多软件的完整路径当我们要运行一个程序,而没有告诉它程序所在的完整路径......
  • 【java问答小知识8】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知
    Java中的"java.util.IdentityHashMap"如何比较键?回答:"java.util.IdentityHashMap"使用==操作符来比较键,即它比较的是引用身份。Java中的"java.util.EventListener"接口有什么作用?回答:"java.util.EventListener"接口是所有事件监听器接口的基接口,用于定义事件处理方法......
  • 探索Java并发容器的深坑与妙用:从同步到并发的进化之路
    探索Java并发容器的深坑与妙用:从同步到并发的进化之路在Java的世界里,并发编程一直是一个复杂而又充满挑战的领域。尤其是在处理并发容器时,不同版本、不同类型的容器带来的种种问题和优化,更是让人眼花缭乱。今天,我们将深入探讨Java并发容器的演化历程,揭示其中的深坑与妙用,帮......
  • Java日期类Date、SimpleDateFormat 日期格式类、Calendar详细介绍
    目录一、Date类1.1Date类简单介绍1.2Date类的构造方法代码演示二、SimpleDateFormat日期格式化类2.1SimpleDateFormat日期格式化类简单介绍2.2构造方法代码演示日期格式化模板常用方法代码演示注意三、Calendar类3.1简单介绍3.2创建对象代码演示3.3静......
  • 【jmeter】ubuntu分布式jmeter报错:java.rmi.ConnectException: Connection refused to
    一、场景   由于高并发测试,服务器资源不够用,所以需要使用jmeter分布式进行测试,但是测试过程中报错:java.rmi.ConnectException:Connectionrefusedtohost:127.0.1.1;  二、问题原因   就是hostname-i如果返回的是127.0.1.1 三、处理方法   修改hostna......
  • Java面向对象的介绍 , 类和对象的概念 , 匿名对象的使用 ,对象的内存图 ,成员变量和局
    第一章.类和对象1.面向对象的介绍1.面向过程:自己的事情自己干,代表语言C语言洗衣服:每一步自己要亲力亲为->找个盆,放点水,找个搓衣板,搓搓搓2.面向对象:自己的事情别人帮忙去干,代表语言Java语言洗衣服:自己的事情别人干->全自动洗衣机......
  • 二级web基础操作题练习(6)——嵌入Javascript代码
    -----要求----- 用JavaScript编写如图1所示页面,当在第一个文本框中输入URLhttp://test.cn/index.jsp?key0=0&key1=1&key2=2,点击按钮“解析参数“后,在下面的三个文本框中分别显示解析出来的参数,如图2所示。图1图2 -----代码示例-----<html><head><!--设置字符编......
  • Java线程池以及Future和CompletableFuture的用法
    参考:https://blog.csdn.net/weixin_50330544/article/details/1316871501.线程池为什么使用线程池?频繁申请/销毁资源和调度资源,将带来额外的消耗,可能会非常巨大。对资源无限申请缺少抑制手段,易引发系统资源耗尽的风险。系统无法合理管理内部的资源分布,会降低系统的稳定性。......
  • Java集合总结
    JAVA中常见的集合总结使用集合的好处:可以动态的保存任意多个对象,使用比较方便提供了一些列方便的操作对象的方法:add,remove,set,get等使用集合添加,删除元素的示意代码简洁明了集合主要分为两种:单列集合:集合中存放的是单个对象双列集合:集合中存放的是键值对对象C......
  • 深入理解java设计模式之单例模式
    这里写目录标题概述单例模式是什么单例模式的使用场景单例模式的优缺点单例模式的几种实现方式饿汉式懒汉式双重检查锁定机制静态内部类枚举使用容器几种可能破坏单例类的方法多线程环境下的竞争条件使用反射机制使用序列化多个类加载器......