Struts2-Full-Hibernate插件是集成Struts2和Hibernate的标准方法吗?
我正在开始一个项目,愿意使用Struts2和Hibernate。
我应该使用struts2-full-hibernate插件 ,还是以不同方式集成它们?
在互联网上搜索让我很困惑:它是集成它们的标准方式吗? 如果没有,这是标准方式?
简而言之:
- 选择一个前端框架(通常是MVC,然后是Struts2 , JSF2 , Spring MVC等等……你已经选择了Struts2。Java EE 6+堆栈中的标准(不一定是更好也不是最常用)是JSF2);
-
选择持久性管理器:
-
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)(反)模式 。
-
-
选择框架和持久性管理器后,您需要选择DI (dependency injection)管理器。 如果您使用的是Java EE 6+,则标准是使用CDI ( JSR 299 – 上下文和dependency injection)。 在Java EE 6或怀旧开发人员之前,Spring仍然可用。 当Java EE缺乏时,它是第一个提供DI / IoC(控制反转)的库。
具体来说,使用Struts2,您可以:
- 将CDI与Struts2-CDI插件集成;
- 将Spring与Struts2-Spring-plugin集成在一起。
结论
根据Java EE,使用Struts2(而不是JSF2)的标准配置是:
- Struts2的
- Java EE 6+ (CDI + JPA 2.x + EJB 3.x)
- Hibernate 4.x
- Struts2的-CDI-插件
- 如何在Hibernate Criteria中添加Distinct
- 在抽象的JPA DAO中抽象命名查询
- Hibernateexception_ $$ _ javassist_0无法强制转换为javassist.util.proxy.Proxy
- Spring3 / Hibernate3 / TestNG:一些测试给出了LazyInitializationException,有些则没有
- Hibernate:加载vs get
- 如何使用hibernate调用存储过程?
- HibernateException:无法获取当前线程的事务同步会话
- JPA:没有@OneToMany注释的左连接
- 如何使用MySQL编写的语句缓存?