您是否在Spring和Hibernate Web应用程序中取得了成功

时间:2009-03-20 15:40:09

标签: java hibernate spring

我正在使用中型网络应用程序4-5个标签,用户登录大约10万用户。我们正在完成从头开始重新设计应用程序并使用spring和hibernate,连接到MySQL。

您是否遇到过重大问题以及Spring在哪些方面为您的应用程序带来了好处。

9 个答案:

答案 0 :(得分:8)

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

  • 使所有配置管道保持一致和直接
  • 依赖注入以支持更好的代码分解
  • Hibernate的声明性“在视图中打开会话”功能
  • 声明性交易划分
  • Acegi(现在是Spring Security)项目可以轻松集成自定义安全模型
  • Spring数据访问支持消除了对任何JDBC访问的大量样板的需求 - 可能不会对Hibernate的使用有所增加,但我们混合了两者。它还允许您使用JDBC& Hibernate在一起非常无缝地

答案 1 :(得分:4)

除了到目前为止所说的内容之外,我还将重点关注Spring(例如@Controller)和Hibernate(例如@Entity)的更新样式注释。它将进一步减少您的代码库,从而减少维护代码。在缺点方面,有一个非常重要的学习曲线,但最终我一次又一次地学到的教训是,Spring + Hibernate的好处远远超过(学习曲线)成本。您只需编写更少的代码就可以专注于业务。

答案 2 :(得分:3)

+1 Spring + hibernate ......

100k用户不是中等规模....这是巨大的。

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

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

答案 3 :(得分:3)

从技术上说,我已经使用spring,hibernate和两者来部署商业应用程序,其中包括数千到数十万的数字。

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

my 2c

答案 4 :(得分:2)

正如Julien Chastang所说,如果这是你的第一个项目,你需要在估算中考虑学习曲线。我们在第一次尝试时未能做到这一点,最终不得不调整我们的大部分计划,因为Hibernate的几个方面都很“难”(例如花了一些时间)来弄明白。

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

答案 5 :(得分:1)

显然,在java框架世界和Rails或Django之类的东西中,有一百万种方法可以构建这样的应用程序。

对我而言,一个很大的卖点是,春天和冬眠都已经成为java世界的事实标准,所以它们绝对有资格成为“你应该知道的事情”(每次面试都会被问到)。春天比Hibernate更多。

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

我对Hibernate的看法很复杂,虽然使用某种数据库层非常重要,所以你也可以。

另见this question.

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

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

答案 8 :(得分:0)

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