【问题标题】:Spring vs Hibernate春天与休眠
【发布时间】:2010-10-06 12:08:38
【问题描述】:

只是想了解一下 Spring 并弄清楚如何在 xml 配置文件中连接 Oracle 连接,现在发现我还需要另一个框架! - Hibernate,这太令人沮丧了,因为感觉就像我越来越深入到越来越多的框架中,却没有真正完成我需要做的事情!

我查看了 Hibernate,它似乎与 Spring 做类似的事情,记住我只想在 Oracle 中做一些 SQL 插入。

我很不情愿,也没有时间学习 2 个框架 - 我可以只采用 Hibernate 来完成我需要做的简单事情吗?

【问题讨论】:

  • 我感受到了你的痛苦,但是 Spring 和 Hibernate 似乎做了完全不同的事情。我发现它们对于某些任务非常依赖。
  • 我放弃了之前的说法,显然 spring 也做了 orm。
  • “我只是想在 Oracle 中做一些 SQL 插入。”著名的遗言。

标签: java hibernate spring


【解决方案1】:

如果您只想为 oracle 插入 sql,我会坚持使用简单的 JDBC 库。您所需要的只是一个 Connection 和一些 ConnectionPool(可能是 c3po)。 Hibernate 等太大/太复杂,IMO 较差。 Hibernate 在底层集成了 JDBC,但在所有可衡量的方面都较差——更难使用,而不是更快,而且您必须编写的查询或不会更容易。这也证明了它们的劣势,因为 HQL 还提供了绕过路由,因此您可以直接输入 JDBC 查询。他们提供了这个(我怀疑),因为对于任何复杂的查询,您根本无法在 HQL 中很好地构造它。

【讨论】:

    【解决方案2】:

    ...我可以只采用 Hibernate 来完成我需要做的简单事情吗?

    是的

    Hibernate 用于 ORM(对象关系映射),即让您的对象持久化到 RDBMS。

    春天走得更远。它还可以用作 AOP、依赖注入器、Web 应用程序和 ORM 等。

    所以如果你只需要 ORM,就使用 Hibernate。当你需要 Spring 的时候就会到来,到时候你就会学会它。

    这是 Spring 的架构视图:

    这是休眠:

    【讨论】:

      【解决方案3】:

      您可以只使用 spring 和 spring-JDBC integration。根据您的数据访问需求的复杂性,它可能绰绰有余。如果您要进行大量数据访问,弹簧Object-relation mapping 也值得研究。

      spring 的好处在于它是一个非常松散耦合的框架。因此,您可以阅读您使用的位,而忘记其余部分 - 即使在运行时也是如此。

      【讨论】:

        【解决方案4】:

        Spring 和 Hibernate 的真正目的是做两件不同的事情。 Spring 首先是一个控制反转的容器和配置子系统,而 Hibernate 是一个数据库绑定和延迟加载引擎。如果您不想在代码中引入一堆新东西,请坚持使用 Spring 并滚动您自己的查询或使用 iBatis 进行更简单的数据库绑定。

        【讨论】:

        • 不要将他与 iBatis 混淆,恕我直言。它确实是一个很好的框架,但对他来说又是另一个。肯定没有负面影响。
        【解决方案5】:

        Spring 和 Hibernate 是针对不同问题的完全不同的框架。 Spring 是一个具有许多特性的庞大框架,Hibernate 是一个 O/R 桥梁。

        我建议在您的情况下使用普通的旧 JDBC(“只是 Oracle 中的一些 SQL 插入”)。

        【讨论】:

        • 是的,Spring 唯一没有的是它自己的 VM,它可能很快就会被添加,不是吗? ;)
        • 有趣的是,据说 Spring 是轻量级的,尽管它是一个如此庞大的框架。显然轻量级是相对的——在 Spring 的情况下比完整的 Java EE 应用程序服务器更轻。
        • 向 Oracle 中插入的不仅仅是几条 SQL。曾经。 SIGH Hibernate 为您提供了可扩展性选项。
        • @Esko,据说 Spring 是轻量级的,因为使用一个组件不会强迫您使用其他组件,通常您的代码对 Spring 没有太多依赖;弹簧施加在您身上的重量很轻
        猜你喜欢
        • 2011-09-23
        • 2013-01-29
        • 2014-10-09
        • 2011-07-13
        • 1970-01-01
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        • 2012-10-31
        相关资源
        最近更新 更多