【问题标题】:Can I use hibernate for data centric applications?我可以将休眠用于以数据为中心的应用程序吗?
【发布时间】:2011-06-12 05:29:02
【问题描述】:

我正在查看hibernate tutorial,他们说休眠不适合以数据为中心的应用程序。它为程序提供的“面向对象结构”给我留下了深刻的印象,但我的应用程序非常以数据为中心(它获取和更新大量记录。但我不使用任何存储过程)。我不能使用hibernate吗?是否有任何通过hibernate编写的包装器,我可以将其用于我的应用程序?感谢任何帮助。

【问题讨论】:

    标签: java database hibernate object-oriented-database


    【解决方案1】:

    我不确定短语data centric 的具体含义。不都是数据库应用data centric吗?但是,如果您确实要处理大量数据,那么 Hibernate 可能不是最佳选择。 Hibernate 最适合表示映射到数据库的对象模型,它可能在任何应用程序中发挥作用,但要执行 ETL(提取/转换/加载)任务,您可能需要手动编写非常高效的 SQL。

    【讨论】:

    • 感谢您的回复。正如您所猜测的那样,以数据为中心,我的意思是处理大量数据。但是在这种情况下是否有任何包装器可用于使用休眠?
    • @hnm 你不需要包装器。您可以直接使用 Hibernate。但这不是很有效。您始终可以为不太密集的情况设置 Hibernate 基础架构,并且可以将本机 SQL 与 Hibernate 一起用于繁重的数据处理。顺便说一句,我很喜欢 Hibernate,但我对它的局限性持现实态度。
    • 感谢您的宝贵建议。
    【解决方案2】:

    原则上你可以,但它往往很慢。 Hibernate 或多或少地为从数据库中检索到的每一行创建一个对象。如果您对大量数据执行此操作,性能会受到严重影响。此外,使用单个更新对多行进行的更新也只有非常基本的支持。

    包装器无济于事,至少在对象创建问题上是这样。

    【讨论】:

      【解决方案3】:

      使用 Hibernate 有很多优点,当一个开发人员获得正确的对象模型时,通过对象与数据库交互会很有吸引力,但在实践中,我发现 Hibernate 最初很棒,但当你使用遇到性能和故障查找等问题。

      在决定 DA(数据访问)层时,我会问自己这个问题。 我是否正在编写一个需要运行不同数据库的应用程序?

      如果答案是肯定的,那么我会考虑像 Hibernate 这样的(ORM)。 如果不是,那么我通常只会通过 Spring 正常使用 JDBC。

      我觉得通过 JDBC 与数据库交互更透明,更容易发现故障和性能调整。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-11
        • 1970-01-01
        • 1970-01-01
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多