【问题标题】:Have you found success with a Spring and Hibernate Web Application您是否在 Spring 和 Hibernate Web 应用程序中取得了成功?
【发布时间】:2010-10-14 13:55:57
【问题描述】:

我正在开发 4-5 个选项卡的中型 Web 应用程序,大约 10 万用户的用户登录。我们正在从头开始重新设计应用程序,并使用连接到 MySQL 的 spring 和 hibernate。

您是否遇到过重大问题以及 Spring 对您的应用程序有何好处。

【问题讨论】:

    标签: java hibernate spring


    【解决方案1】:

    除了到目前为止所说的,我强烈推荐这本书:Spring Recipes - Problem Solution Approach (Amazon),结合非常好的在线文档,你应该准备好征服世界;-)

    【讨论】:

      【解决方案2】:

      从技术上讲,我已经使用 spring、hibernate 和两者部署了数以千计到数十万的商业应用程序。

      从管理的角度来看,在一个案例中,我有一个团队是优秀的技术人员,所以他们设法用 spring 和 hibernate 重写了一个应用程序,但是......他们对接口发疯了(模型的每个新对象都需要 16接口),滥用 AOP,因此几乎不可能跟踪事务和日志记录,堆栈跟踪毫无意义,使用工具映射休眠文件而没有完全了解正在做什么(在某些情况下,连接 4 个表可能很简单实体,以及使生成的应用程序更难增强、调试、修复甚至设置开发人员环境的各种问题......)

      我的 2c

      【讨论】:

        【解决方案3】:

        hibernate 和 spring 的理解开销很大。如果您有足够的时间或有经验的 java/spring/hibernate 开发人员可以联系,我只会建议您这样做。有了 spring 项目,一旦你开始了它,你基本上可以忽略它的 spring 部分并专注于页面和逻辑设计。休眠并不难。 HQL 是一个更难的问题。我的大部分时间都花在了 bean 和 JSF 级别。将我的项目的这一层与一些在 JSP 中搞乱的伙伴进行比较,我很高兴能够轻松使用 JSF。我很容易从 MySQL 中的初始实现切换到 Oracle,这证明 Hibernate 很好地处理了抽象。

        【讨论】:

          【解决方案4】:

          在某些情况下,使用 Hibernate 创建特定对象到关系映射或编写特定 HQL 查询非常困难。但是,您将在 10 次中遇到 1 次这样的事情,并且您的数据库越规范化,您的情况就会越好。这很值得。

          任何新的 Java Web 项目都应该使用 Spring MVC(2.5+ 和 Annotations)和 Hibernate。

          【讨论】:

            【解决方案5】:

            +1 弹簧+休眠......

            10 万用户不是中等规模......这是巨大的。

            使用 spring,您可以强制编码器对接口进行编码,从而提高可测试性。这是我很少听到人们谈论的好处。

            看看 memcached 到缓存数据memcached.....

            【讨论】:

            • 同时或总共100K用户,这是个问题;)
            【解决方案6】:

            正如 Julien Chastang 所说,如果这是您的第一个项目,您需要在估算时考虑学习曲线。我们在第一次尝试时未能做到这一点,最终不得不调整很多计划,因为 Hibernate 的几个方面“很难”(例如,需要一些时间)才能弄清楚。

            根据我们遇到的一个问题,我可以给出的一个具体建议是:如果您需要编写复杂的 SQL,并且您不想花时间弄清楚如何让此类查询在 HQL 或其他在 Hibernate 中提供的产品,首先让它在 vanilla SQL 中运行,然后再返回并将其修补回 Hibernate。

            【讨论】:

              【解决方案7】:

              除了到目前为止所说的之外,我将重点关注 Spring(例如 @Controller)和 Hibernate(例如 @Entity)的更新样式注释。它将进一步减少您的代码库,使您需要维护的代码更少。不利的一面是,学习曲线相当显着,但最终我一次又一次地学到的教训是 Spring + Hibernate 的好处远远超过(学习曲线)成本。您只需编写更少的代码,让您专注于业务。

              【讨论】:

                【解决方案8】:

                没有大问题。春天特别有利于:

                • 使所有配置管道一致且简单
                • 依赖注入支持更好的代码分解
                • Hibernate 的声明性“在视图中打开会话”功能
                • 声明性事务划分
                • Acegi(现为 Spring Security)项目使集成自定义安全模型变得容易
                • Spring 数据访问支持消除了对任何 JDBC 访问的大量样板文件的需求——这对于 Hibernate 的使用来说可能不是这样的提升,但我们将两者结合起来。它还允许您相当无缝地一起使用 JDBC 和 Hibernate

                【讨论】:

                  【解决方案9】:

                  显然,有上百万种方法可以构建这样的应用程序,无论是在 Java 框架世界中,还是使用 Rails 或 Django 之类的东西。

                  对我来说,一个很大的卖点是 spring 和 hibernate 都已成为 Java 世界中的事实标准,因此它们绝对有资格成为“你应该知道的事情”(每次工作面试都会问我)。 Spring 比 Hibernate 更重要。

                  获得 spring 的价值需要一些支持 spring 的应用程序才对我有意义。它强制执行独立的代码模块和某种有助于测试的组件设计风格。我建议您直接使用它,并从使用中了解它的价值。

                  我对 Hibernate 的感觉很复杂,尽管使用某种 db 层很重要,所以你也可以。

                  另见this question.

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-05-03
                    • 2019-05-09
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-01-21
                    • 2012-09-07
                    • 1970-01-01
                    相关资源
                    最近更新 更多