【发布时间】:2010-10-14 13:55:57
【问题描述】:
我正在开发 4-5 个选项卡的中型 Web 应用程序,大约 10 万用户的用户登录。我们正在从头开始重新设计应用程序,并使用连接到 MySQL 的 spring 和 hibernate。
您是否遇到过重大问题以及 Spring 对您的应用程序有何好处。
【问题讨论】:
我正在开发 4-5 个选项卡的中型 Web 应用程序,大约 10 万用户的用户登录。我们正在从头开始重新设计应用程序,并使用连接到 MySQL 的 spring 和 hibernate。
您是否遇到过重大问题以及 Spring 对您的应用程序有何好处。
【问题讨论】:
除了到目前为止所说的,我强烈推荐这本书:Spring Recipes - Problem Solution Approach (Amazon),结合非常好的在线文档,你应该准备好征服世界;-)
【讨论】:
从技术上讲,我已经使用 spring、hibernate 和两者部署了数以千计到数十万的商业应用程序。
从管理的角度来看,在一个案例中,我有一个团队是优秀的技术人员,所以他们设法用 spring 和 hibernate 重写了一个应用程序,但是......他们对接口发疯了(模型的每个新对象都需要 16接口),滥用 AOP,因此几乎不可能跟踪事务和日志记录,堆栈跟踪毫无意义,使用工具映射休眠文件而没有完全了解正在做什么(在某些情况下,连接 4 个表可能很简单实体,以及使生成的应用程序更难增强、调试、修复甚至设置开发人员环境的各种问题......)
我的 2c
【讨论】:
hibernate 和 spring 的理解开销很大。如果您有足够的时间或有经验的 java/spring/hibernate 开发人员可以联系,我只会建议您这样做。有了 spring 项目,一旦你开始了它,你基本上可以忽略它的 spring 部分并专注于页面和逻辑设计。休眠并不难。 HQL 是一个更难的问题。我的大部分时间都花在了 bean 和 JSF 级别。将我的项目的这一层与一些在 JSP 中搞乱的伙伴进行比较,我很高兴能够轻松使用 JSF。我很容易从 MySQL 中的初始实现切换到 Oracle,这证明 Hibernate 很好地处理了抽象。
【讨论】:
在某些情况下,使用 Hibernate 创建特定对象到关系映射或编写特定 HQL 查询非常困难。但是,您将在 10 次中遇到 1 次这样的事情,并且您的数据库越规范化,您的情况就会越好。这很值得。
任何新的 Java Web 项目都应该使用 Spring MVC(2.5+ 和 Annotations)和 Hibernate。
【讨论】:
+1 弹簧+休眠......
10 万用户不是中等规模......这是巨大的。
使用 spring,您可以强制编码器对接口进行编码,从而提高可测试性。这是我很少听到人们谈论的好处。
看看 memcached 到缓存数据memcached.....
【讨论】:
正如 Julien Chastang 所说,如果这是您的第一个项目,您需要在估算时考虑学习曲线。我们在第一次尝试时未能做到这一点,最终不得不调整很多计划,因为 Hibernate 的几个方面“很难”(例如,需要一些时间)才能弄清楚。
根据我们遇到的一个问题,我可以给出的一个具体建议是:如果您需要编写复杂的 SQL,并且您不想花时间弄清楚如何让此类查询在 HQL 或其他在 Hibernate 中提供的产品,首先让它在 vanilla SQL 中运行,然后再返回并将其修补回 Hibernate。
【讨论】:
除了到目前为止所说的之外,我将重点关注 Spring(例如 @Controller)和 Hibernate(例如 @Entity)的更新样式注释。它将进一步减少您的代码库,使您需要维护的代码更少。不利的一面是,学习曲线相当显着,但最终我一次又一次地学到的教训是 Spring + Hibernate 的好处远远超过(学习曲线)成本。您只需编写更少的代码,让您专注于业务。
【讨论】:
没有大问题。春天特别有利于:
【讨论】:
显然,有上百万种方法可以构建这样的应用程序,无论是在 Java 框架世界中,还是使用 Rails 或 Django 之类的东西。
对我来说,一个很大的卖点是 spring 和 hibernate 都已成为 Java 世界中的事实标准,因此它们绝对有资格成为“你应该知道的事情”(每次工作面试都会问我)。 Spring 比 Hibernate 更重要。
获得 spring 的价值需要一些支持 spring 的应用程序才对我有意义。它强制执行独立的代码模块和某种有助于测试的组件设计风格。我建议您直接使用它,并从使用中了解它的价值。
我对 Hibernate 的感觉很复杂,尽管使用某种 db 层很重要,所以你也可以。
【讨论】: