【问题标题】:Architecture for spring enterprise web application [closed]Spring企业Web应用程序的架构[关闭]
【发布时间】:2012-02-03 15:09:37
【问题描述】:

我需要了解新项目中使用的架构。我们想使用 GWT 和 spring mvc 作为基础。 此外,我们在域模型中有大约 100 个实体,它们需要保存在数据库中。所以我们很可能会使用 Hibernate 作为 ORM 解决方案。

  1. 我不明白我们应该使用什么应用服务器?在我们的案例中,我们可以获得 tomcat 还是企业应用程序的最佳解决方案?请给我建议。

  2. tomcat如何处理需要通过hibernate进行数据库操作的http请求?

  3. 什么时候读取spring applicationContext.xml?是否在每个http请求期间?

  4. 在中等负载应用的情况下,使用 Spring+Hibernate+JPA 是一种快速的方式吗?

【问题讨论】:

    标签: hibernate spring tomcat jpa architecture


    【解决方案1】:

    我有两个项目,使用这些技术实现:

    • Apache Tomcat
    • PostgreSQL
    • 休眠
    • JPA
    • 春天
    • Spring 安全性
    • JAX WS
    • GWT
    • MVP4g

    我使用 Spring 只是为了将所有技术放在一起。

    我有两个不同的应用程序,我想分享在这个应用程序中一起使用这些技术的经验。这两个应用程序在服务器上都没有困难的逻辑,即使在第二个应用程序中,所有逻辑都放在客户端上,而服务器只是将数据存储到数据库/从数据库中获取数据。 GWT 很好地解决了这个问题。我认为,服务器上的最小计算最适合云应用程序。

    1.第一个是监控系统,旨在解决这些任务:

    • 从主要公司服务器收集统计信息(从每 30 秒到每 5 分钟)

    • 在服务器端做一些简单的计算

    • 将数据存储在数据库中

    • 以图形表示形式为最终用户(我的大学、拨号器等)显示此数据

    因此,主要问题是获取大量数据并将其显示在图表中,这些数据存储在一个表中(每 5 天大约 +100 万行)。我们必须在一张图上显示大约 5k 到 20k 点,并定期重新加载此图以从服务器获取实际信息。我们决定使用 hibernate+jpa,但我认为这不是最好的方法,因为我们开始在获取和发送 10k+ 行时遇到问题。

    所以,我们决定从 spring+hibernate+jpa 迁移到 spring+jdbc,因为它比第一个运行得更快,并且在我的情况下使用更少的内存。所以最好不要使用休眠如果你:

    • 几乎没有实体(在我的例子中是 6 个)
    • 拥有大量数据
    • 需要快速加载

    永远记住,您需要尽可能少地从数据库中获取数据,使用不同的过滤器等(这在我的情况下不起作用,因为我必须尽可能多地显示信息才能为操作员提供最佳统计信息,但您也可以使用数学来平均一些值、数字等)

    对于客户端,Google Charts 与 GWT 配合得非常好。由于应用程序被放置在本地网络中,我们在客户端加载大量数据时没有问题。 我在云中部署了应用程序 (Jelastic),只是为了进行测试,并且由于在短时间内传输大量数据而面临客户端加载缓慢的问题。

    2。第二个应用是用于管理销售、订单、联系人等的云应用:

    它是为解决这些任务而构建的:

    • 快速存储、获取、计算数据
    • 为用户提供简单愉快的界面来操作上面提到的任务

    此应用在服务器端没有逻辑。服务器仅从数据库获取和存储数据。 我们借助 maven(实体+daos、spring services 和 web GWT)将应用分为几个模块。

    所以 hibernate+jpa 在这里表现不错,因为我们有大量的实体而不是大表。此外,所有客户端网格都有加载少于 100 行的默认过滤器,用户也必须过滤他的搜索。因此,如果在这个项目中使用 hibernate+jpa,我有相反的方向:

    • 少量数据传输
    • 大量实体

    对于 GWT,在纯 Java 上编写客户端逻辑、调试代码和通过刷新页面测试新创建的逻辑非常棒。 我也应该建议你使用MVP4g 作为模型视图展示器框架以正确的方式构建 GWT 应用程序:) 它确实简化了开发过程和代码理解。

    至于 tomcat,我们在两个项目中都没有遇到大问题。

    我认为这些基本建议将帮助您构建好的项目! 祝你好运!

    【讨论】:

    • 感谢您提供如此有用的回复!我们的新项目与您的第一个项目类似,但数据量会更少。因此,让我问几个问题。提到您在图表中显示数据。谷歌图表可以显示图表吗?我需要展示一个带有节点和边的网络。
    • 第二个问题 - 我即将使用 GWT 2.4。所以它嵌入了 mvp 框架。我应该选择这个和 mvp4g 中的哪一个?
    • 抱歉,我弄错了图表,我不是母语人士,我说的是图表 :) 只是带注释的时间线、面积和饼图。我不能说 GWT 中的原生 mvp 不好,但我更喜欢 mvp4g。你最好尝试几个框架来决定哪一个更适合你。 gwt-platform 也是一个不错的平台。我可以再添加一件事 - 阅读 gwt 请求工厂 - 自 gwt 2.1 以来将客户端与服务器连接的第二种方式。在下一个项目中,我将使用请求工厂而不是 RPC。 GL!
    【解决方案2】:
    • 1) Tomcat 是一个很好的——不可能说什么是最好的
    • 2) Tomcat 只是一个 Servlet 容器。数据库访问必须由您在服务器端应用程序中处理
    • 3) 启动时
    • 4) 不可能说,中间负载是什么意思,我的用例是什么...... -- Spring 不会对运行时性能产生太大影响:所以最后的问题是,是一个 JPA 对象关系映射器足够快——在很多情况下确实如此。

    请提出建设性的问题,我只是因为问题3才回答的

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 2014-01-22
      • 1970-01-01
      • 2013-04-06
      • 2011-12-10
      • 2016-09-05
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多