【问题标题】:Java framework "suggestion" for persisting the results from an Oracle 9i stored procedure using Apache Tomcat使用 Apache Tomcat 持久化 Oracle 9i 存储过程的结果的 Java 框架“建议”
【发布时间】:2010-03-19 10:46:46
【问题描述】:

我正在开发一个调用 Oracle 存储过程的 Java servlet。随着时间的推移,存储过程可能会“增长”,我担心“在网页上显示结果”所花费的时间。

当我处于实施阶段时,我想要一些适用于 Apache Tomcat 5.5 的持久性框架的建议?我看到了两种持久化数据库结果的方法。每 N 分钟进行一次预定的数据库查询,或者使用触发器。

Hibernate 似乎是显而易见的答案,但我从未从 Hibernate 调用存储过程(HQL 和 Criteria)。有没有更合适的框架可以使用?

【问题讨论】:

  • 你已经嫁给了 Oracle,因为你正在使用它的存储过程,不是开始思考其他方面的好时机:(

标签: java oracle hibernate persistence triggers


【解决方案1】:

几乎所有 Java ORM 都可以在像 Tomcat 这样的 servlet 容器环境中工作:Hibernate、Cayenne、TopLink...但它对提高存储过程执行速度和更快地呈现页面没有一点帮助。

以下是一些一般性建议:

  • 不要使用存储过程(供应商锁定、维护噩梦、意大利面条代码、不合标准的开发语言等)
  • 使用 ORM
  • 从基本的性能优化策略开始以获得更好的响应时间:确保您的索引有意义,调整数据库配置,在数据库中引入冗余值,如果绝对必要,使用触发器重新计算它们,如果您不需要绝对最新的数据,定期预先计算结果并在必要时简单地读取它们等。

【讨论】:

    【解决方案2】:

    我建议,在这个阶段不要考虑使用持久性框架。只需使用直接 JDBC 来保存结果。从阅读您的帖子来看,听起来您并不需要它。

    如果您想简化与 JDBC 交互的应用程序,请考虑使用 spring。

    虽然,数据库独立性很好。我假设您正在运行 1. 使用 pl/sql 的复杂逻辑或 2. 转换大量数据。考虑使用带有触发器的 oracle DMBS_SCHEDULER。

    【讨论】:

      【解决方案3】:

      Hibernate 似乎是显而易见的答案,但我从未从 Hibernate 调用存储过程(HQL 和 Criteria)。

      不那么明显,不使用存储过程,尤其是如果您只是调用存储过程并且不处理对象持久性(CRUD 操作)。

      有没有更合适的框架可以使用?

      直通 JDBC,或 Spring StoredProcedure,或 iBATIS。但不是 Hibernate,它对您的用例没有任何好处。

      【讨论】:

        猜你喜欢
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 2015-11-02
        • 2015-04-06
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多