Java和Oracle-将JAR加载到Oracle还是单独执行?

Java和Oracle-将JAR加载到Oracle还是单独执行?,java,oracle,Java,Oracle,我有一种情况,我需要执行一些代码,由于一些原因(我在这里不赘述),这些代码在Java中比在PL/SQL中执行得更好。在我看来,有两种选择: 用我编译的所有代码和其他支持文件/其他jar创建一个jar,将jar加载到Oracle(我们运行的是10g),然后从存储过程中执行Java 优点:Java代码与系统的其余部分集成得非常好,可以从现有的PL/SQL调用 缺点:我在Oracle中运行Java的经验很少 将Java放在一个单独的jar中,并通过shell脚本执行它 优点:我以前写过这样的Ja

我有一种情况,我需要执行一些代码,由于一些原因(我在这里不赘述),这些代码在Java中比在PL/SQL中执行得更好。在我看来,有两种选择:

  • 用我编译的所有代码和其他支持文件/其他jar创建一个jar,将jar加载到Oracle(我们运行的是10g),然后从存储过程中执行Java

    • 优点:Java代码与系统的其余部分集成得非常好,可以从现有的PL/SQL调用
    • 缺点:我在Oracle中运行Java的经验很少
  • 将Java放在一个单独的jar中,并通过shell脚本执行它

    • 优点:我以前写过这样的Java,所以我对它很熟悉
    • 缺点:与其他方面的集成度差,可能需要额外的手动步骤来运行和管理
  • Java代码必须从Oracle表中读取XML数据,然后将数据(非XML)写入其他表,因此数据库集成的数量让我认为将Java代码加载到数据库中可能是个好主意,但我不确定


    人们在Oracle中加载和运行Java代码有什么经验?测试和调试有多容易?是否需要特殊工具?我应该知道的任何“陷阱”?

    我会选择选项1:在数据库中加载java代码。我对这种方法有很好的经验,你不需要太多的经验就可以用这种方法找到一个好的解决方案


    在数据库中嵌入Java变得复杂的唯一部分(您必须为Java代码设置特殊权限)是当您需要访问外部资源(网络、文件i/o等等)时,而这显然不是您遇到的问题。

    对于您的场景,在数据库中执行此操作似乎是正确的方法。在外部进行的原因可能是:

    • 依赖与Oracle内置JVM不兼容的Java LIB
    • 需要在不同于Oracle的linux用户帐户下运行它

    但是在您的场景中,我看不到这两种情况

    如果您要访问大量数据,那么从数据库内部运行java将执行得更好。不要让不知情的人左右你的选择!我建议研究JDeveloperIDE。它知道所有部署细节。@Thorbjørn:谢谢。我将在下一个项目中研究它。现在开始安装/配置/学习新IDE的时间有点太紧了,但我会记住这一点,我不会访问任何外部的东西。只有存储XML的表和一个或两个其他表。我主要关心的是测试和调试。是否有任何IDE可以单步执行此代码?另外,我可以继承的一些代码(如果我选择的话)使用log4j来记录应用程序信息。我可以将其重定向到一个表(或dbms_输出?),但这将是更多的工作,我的时间表不是,嗯。。。豪华的我不知道log4j。我没有这个问题,因为每次我编写Java代码在Oracle数据库上运行时,它都是专门用于此目的的特定代码。关于IDE支持也不确定:您可以查看PL/SQL开发人员{有史以来最伟大的Oracle前端IMHO:-)}或Oracle的SQL开发人员,看看他们的调试器是否支持Java。