ejb和spring的区别是:1.spring可以作为中间层使用,就像ejb的sessionBean,但是spring的依赖注入很强大,而ejb只支持jndi方式的注入;2. ejb有持久层,比如jpa;spring可以无缝结合很多持久化框架,比如hibernate、jpa、ibatis,jdbc。
一、ejb和spring的区别
具体区别
1.spring可以作为中间层使用,就像ejb的sessionBean,但是spring的依赖注入很强大,而ejb只支持jndi方式的注入。
2.ejb有持久层,比如jpa;spring可以无缝结合很多持久化框架,比如hibernate、jpa、ibatis,jdbc。
3.ejb支持分布式(最大特点),spring可以继承webservice来实现,也可以结合一些分布式的框架实现,但是ejb的分布式比较成熟(虽然也有一些事务相关的,无法解释的问题)。
4.spring有spring mvc提供web层,而ejb需要结合jsf或者自己去组装struts等框架实现。
总结
首先,EJB是指运行在EJB容器中的JavaBean。Tomcat是Web容器的参考实现。一个完整的JavaEE服务器应该包括Web容器和EJB容器。
其次,Web容器中无法运行EJB,同时所有的JavaBean都是在服务器端运行的。如果有在客户端的话,就变成C/S结构了。
目前来说除非需要分布式处理,不然基本上不需要考虑EJB。Spring能帮你处理好除分布计算之外的一切。
用JavaScript来进行服务器调用的话,属于Ajax的范围了。
至于购物车。一般来说有几种方法,一种是EJB中的有状态SessionBean。一种是使用HttpSession保存。还有就是自己建设一个对象池来处理。
JavaBean是领域模型的具体化类,保存了信息和业务。只有set、get方法的JavaBean是失血模型。现在来说一般多少不太欢迎这种东西。把本属于领域对象的业务逻辑都丢掉了。
实际上现在的JavaEE系统分这么几个层。
表现层(Struts、JSF等)+应用层(处理业务,可以是JavaBean也可以是EJB)+持久层(JDBC、Hibernate)。
不要在Struts的Action类中写业务代码,那是反模式。不然日后需要修改的时候很麻烦的。Action中只有流程指向和对应用层的调用。
延伸阅读:
二、EJB组件的工作流程
EJB Component在部署到应用服务器上之后, 客户端就可以调用它来完成各种功能。工作过程如下:
1) 客户端首先通过JNDI服务检索Home对象。在EJB应用部署到应用服务器上之后, 容器会自动获得Home对象的信息并将其加入到JNDI中。
2) JNDI服务返回所查找的Home对象的引用。
3) Home对象的创建或者查找EJB对象。
4) Home对象将获得的EJB对象返回给客户端。
5) 客户端利用获得的EJB对象引用, 调用业务方法。
6) EJB对象获得对应bean的一个实例并将相应的业务方法调用传递给该实例。
7) Bean实例通过其实现代码, 完成相应的业务逻辑并将结果返回给EJB对象。
8) EJB对象将方法的结果返回给客户端
以上就是关于ejb和spring的区别的内容希望对大家有帮助。