java - 如何在不使用 Roo 的情况下简化 Spring/Hibernate 组合

标签 java ajax spring web-applications

在过去的一年里,这个组合在简化方面有什么新的进展吗?还是和以前基本一样?

我不太喜欢很多新的 RAD 框架/平台(Rails 等)。我认为它们非常适合小型应用程序或概念证明……但当我转向复杂的需求时,我通常很快就会对它们的缺点感到恼火。 Rails 尤其有很多问题——令人惊讶的是,与在 Java 中花费的时间相比,太多的问题实际上减慢了我的速度……我认为大多数人永远不会遇到这些问题……或者也许永远不会遇到直到他们的蜜月期结束了。

在很多情况下,我宁愿拥有 Spring/Java 的强大功能和可靠性,即使这意味着我需要更长的时间来开发应用程序。我对此感到很舒服。我相信它。我知道如何部署它。它有效,并且非常适合大型应用程序。

我真的很想尽可能地提高我的开发经验。我正在寻找人们通常喜欢在 Spring/Hibernate 项目中使用大型 Web 2.0 (ria) 类型项目的内容(或者我猜 Spring/Whatever 也有效......)。

  1. 我非常确信 dbunit 已经过时了,并且是我的测试性能问题的一个重要根源。有没有类似于工厂女孩的东西,但是是java的?

  2. 有什么方法可以使链接更像“应用程序”,而不仅仅是松散的字符串吗?我倾向于经常重构 url,手动测试应用程序以确保不会出现任何问题是一种很大的痛苦。我将不胜感激任何解决方案。我目前使用 Freemarker/Spring MVC。

  3. 我发现我需要在我的应用程序中使用越来越多的 AJAX。简单的 ajax 就可以了,但目前我必须使用 Jackson 来解析传入的请求 JSON,然后再将其发送到 Spring MVC Controller 。很多解析/映射非常耗时。一定有更好的方法。有没有?我不想再为 Controller 层传入的 JSON 请求编写解析器/对象映射器。

  4. Rails 中我真正喜欢的一件事是能够将查询组合在一起并具有可重用的查询片段。我忘记他们叫什么了。有没有办法使用 Hibernate/Spring 来做到这一点?我有很多使用大量 HQL 字符串的查询,而且很多时候,这些查询的片段在整个应用程序中一遍又一遍地重复。我想在这里重用我能利用的东西。可以吗?

  5. 我在部署时通常会遇到太多在测试时永远无法发现的小问题。 Hibernate 代理错误和奇怪的延迟加载问题位于此列表的顶部,但即使是 Spring MVC Controller 的注释问题和各种其他问题也可能会突然出现,这些问题很难测试(或者可能无法测试?)。解决此类问题的方法有哪些?不使用 hibernate ?做一些其他类型的测试吗?什么有效?我不介意做测试,但我希望测试得快,否则我可能会生气并拒绝这样做。

  6. 一般来说,您认为有助于提高生产力的任何其他事情我可能没有听说过。不幸的是,我已经有一段时间在 Java 领域不太活跃了,所以我落后了。我需要一些“这是现在可用的”类型的建议。

谢谢!

最佳答案

我只会回答我所知道的...

2. 我们在应用程序中使用自定义标签库做了类似的事情,但这显然只有在您使用 JSTL 时才有用。您是否考虑过创建一个包含所有 URL 作为静态最终字符串的类,然后将该类作为 shared variable 添加到 Freemarker 中?然后,Spring MVC 中的 @RequestMapping 注释应该能够引用那些相同的静态最终字符串。

3.我推荐Direct Web Remoting — 它会在服务器和客户端站点上自动为您处理 AJAX 调用。设置完成后,只需注释要从 Javascript 代码调用的 Java 方法,然后 DWR 生成 Javascript 代码,为您进行这些调用并将返回值转换为 Javascript 对象。 DWR 已经有一段时间没有积极开发了,但我发现它非常稳定和可靠。

5. 特别是对于 Hibernate 延迟加载,我们只需启用 Spring 的 org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor 即可保持单个 session 打开整个网络请求。它消除了延迟加载错误,并使 Hibernate 的行为更容易理解(即因为您始终处于 session 中,所以所有更新都提交到数据库)。如果您打算这样做,请在开发开始时进行...否则现有代码可能会被破坏,因为如果它假设 session 已关闭。

6. 如果您的网站与其说是网站,不如说是网络应用程序,请考虑使用 Vaadin 进行构建。 。它是一个基于 GWT 构建的开源 RIA 框架,我们在 Spring 和 Hibernate 中非常成功地使用它。我们使用 Vaadin 来处理“类似应用程序”的部分,例如管理工具,并使用 Spring MVC/JSTL 来处理“类似 Web 的”部分,例如面向公众的页面;两者都构建到具有相同 Spring/Hibernate 业务层的相同 WAR 中。

关于java - 如何在不使用 Roo 的情况下简化 Spring/Hibernate 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7313431/

相关文章:

java - 来自静态上下文的非静态方法

javascript - 使用 jQuery 的简单 AJAX HTTP GET

java - X-CSRF-TOKEN 不是由 Spring Boot 生成的

java - 没有任何根本原因的 IllegalStateException

java - 从 Java 中的 EnumSet 获取值

php - 拉维尔 5 : How to Paginate an Ajax Response

java - vaadin 8 + spring 自定义小部件集

spring - DataTable - 延迟加载 Primefaces 显示错误

java - 从网页获取数据(屏幕抓取)

javascript - 如何在不刷新页面的情况下使用 ajax/javascript 更新数据库 asp.net mvc