Struts2-Full-Hibernate插件是集成Struts2和Hibernate的标准方法吗?

我正在开始一个项目,愿意使用Struts2和Hibernate。

我应该使用struts2-full-hibernate插件 ,还是以不同方式集成它们?

在互联网上搜索让我很困惑:它是集成它们的标准方式吗? 如果没有,这是标准方式?

简而言之:

  1. 选择一个前端框架(通常是MVC,然后是Struts2JSF2Spring MVC等等……你已经选择了Struts2。Java EE 6+堆栈中的标准(不一定是更好也不是最常用)是JSF2);
  2. 选择持久性管理器:

    • Java EE 6+的标准是JPA 2.0 ( JSR 317 – Java Persistence API)。 JPA只是注释,你需要一个实现它们的库; Hibernate可以用作JPA实现。 Hibernate不是唯一的JPA提供者,但它是最常用的(不一定是最好的),因此是最标准的。 使用此配置,您可以通过将表示层(Struts2操作)与执行CRUD 的持久层分离来构建应用程序的层。 DAO层也不再需要了,因为JPA的EntityManager本身就是 dao。

    • 您可以使用原始 Hibernate及其专有注释(或任何其他持久性管理器),在这种情况下,使用Struts2,您可以使用(vintage?) Struts2-Full-Hibernate插件 。 它简化了一些作业,但强迫您使用OSIV (Open-Session-In-View)(反)模式 。

  3. 选择框架和持久性管理器后,您需要选择DI (dependency injection)管理器。 如果您使用的是Java EE 6+,则标准是使用CDI ( JSR 299 – 上下文和dependency injection)。 在Java EE 6或怀旧开发人员之前,Spring仍然可用。 当Java EE缺乏时,它是第一个提供DI / IoC(控制反转)的库。

    具体来说,使用Struts2,您可以:

    • CDIStruts2-CDI插件集成;
    • SpringStruts2-Spring-plugin集成在一起。

结论

根据Java EE,使用Struts2(而不是JSF2)的标准配置是:

  • Struts2的
  • Java EE 6+ (CDI + JPA 2.x + EJB 3.x)
  • Hibernate 4.x
  • Struts2的-CDI-插件