【问题标题】:EJB, spring & hibernateEJB、弹簧和休眠
【发布时间】:2011-08-09 04:50:27
【问题描述】:

我从事 Java 标准版开发已经有一段时间了,框架和解决方案对我来说相当明显(Swing for GUI 等)。我最近开始了为自己的需要构建服务器并托管网页的任务(除了托管网页之外,服务器还将做的事情包括个人 SVN 托管并将更多的网络功能集成到现有和未来的应用程序中)。对于仅对单台计算机进行编码(也就是说,分布式计算等并不是真正的问题)——我不完全确定 Spring、Hibernate 和 EJB 之间的关系,并且对每种计算机的功能也不是很了解。信息将不胜感激。我知道 Spring 是 EJB 的替代品,而 Hibernate 是一个对象关系映射库,那么 EJB 是否将两者结合起来?

【问题讨论】:

标签: java hibernate spring ejb enterprise


【解决方案1】:

总的来说,EJB3 由 3 种 bean 类型组成;消息驱动 Bean、无状态/有状态会话 Bean 和实体 Bean 或 JPA(Java 持久性架构)。 Hibernate 可以用作 JPA 提供程序,但不一定非要那样使用。

Spring 的功能与消息驱动 Bean 和无状态/有状态会话 bean 大致相似,但它没有与 JPA 等效的功能。相反,它允许您直接使用 JPA 或休眠,但如果您将 Spring 与 JPA 结合使用,您将需要一个 EJB 容器。

另一个区别是 EJB 是由“容器”提供的,而 spring 是一个框架,可以部署到 java se 应用程序或 java servlet 容器 web 应用程序(如 jetty 或 tomcat)中。这是一个重要的区别。 Tomcat 不是 EJB 容器,只是一个 servlet 容器,因此如果您只使用基本的 tomcat,则不能使用 EJB,但您可以通过在 Web 应用程序(WEB-INF/lib)中包含所需的 spring jar 文件来使用 spring )。在这种情况下,您也不会使用 JPA,但您可以使用 hibernate。

一些作为 EJB 容器的 Java 服务器包括 weblogic、websphere、jboss、geronimo 和 glassfish。如果将 Tomcat 与 OpenEJB 结合使用,它可以成为 EJB 容器。

在我目前正在开发的应用程序中,我使用的是 tomcat + openejb,所以我有一个 EJB 容器,因此我可以将 JPA 与 OpenJPA 一起用作持久性提供程序。我正在使用 Spring MVC 进行 Web 应用程序开发,并且很可能也会使用 Spring Security。我可能还会使用无状态会话 EJB 来封装业务功能,但我也可以轻松地使用 Spring 服务/dao bean 而不是无状态会话 ejb。

有时很难确定您应该使用哪个框架或容器的哪些部分,实际上归结为偏好或使用另一个不存在的功能或易用性。另一个考虑因素是内存利用率。一些 ejb 容器在没有应用程序运行的情况下刚启动就会消耗大量内存。这是我最终使用 tomcat + openejb 的原因之一。希望这会有所帮助。

【讨论】:

  • 很好很简单的解释
猜你喜欢
  • 2016-11-04
  • 2020-03-13
  • 1970-01-01
  • 2012-01-22
  • 2015-12-14
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 2012-07-04
相关资源
最近更新 更多