EJB3的优点

       随着ejb3的出现,ejb又开始了它的第二春。Ejb3相比ejb2,简单了许多。这一点从很多方面能够看出来。

 

       有了一段Ecplise+Lomboz和IBM RAD开发EJB2的经历之后,深深的感觉EJB2的复杂性。我们会为了XXXBean.findUserById(String userId)这个方法,要做很多前期的代码生成,最后要通过JNDI来lookUp相应的EJB接口,最后再调用相应的业务逻辑。

 

       还好我们有Lomboz或者RAD,如果没有这些工具,那么可想而知其繁杂程度。这也能说明人们那时候为什么会抱怨EJB2的复杂性。

 

        还好,EJB3出现了,我们能够发现EJB3不再EJB2中需要的两个接口,而且提供了注解的方式来定义Session的类型。

@Stateless

@Remote(UserManagerBean.class)

@Local(UserManagerBean.class)

publicclass UserManager implements UserManagerBean {

 

       public void addUser(User user) {

              user.setId(10);

       }

}

 

       而且EJB3使用了IOC的方式来代替了home接口的ejbcreate创建EJB远程或本地接口的方式。这点在EJB3的开发代码中我们能够察觉到,我们没有了HOME接口,也看不到那些ejbcreate等容器要处理实现的方法。

 

       之所以说EJB3使用的是IOC的方式来创建ejb远程接口或本地接口对象的,是因为我们能够在EJB3的代码中找到@EJB的注解。

 

@ejb

private UserManageruserManager;

userManager.addUser(user);

 

 

        学过Spring的应该对这个知识非常熟悉。通过这个IOC的技术使用能够很好的看出来SUN公司的那种勇于否定自己的精神,不断进取的精神。当然通过这个IOC技术能够很好的减少了或者不再让用户和JNDI打交道,因为我们知道其实EJB2的复杂性另一个原因就是因为JNDI,虽然说JNDI在J2EE架构中起着举足轻重的作用,但是我们在做EJB2的开发实践的时候我们就会发现JNDI的配置是一件非常繁琐的事情。所以EJB3果断选择IOC的注解来解决这样的复杂性问题。

 

       还有一点EJB3优于EJB2的地方是在持久化方面,EJB3采用的是JPA来代替了EJB2的EntityBean,这样也比EJB2简单很多,开发过EJB2实体bean的可能会比较认同,EJB2的实体bean是需要在Model类和实体Bean中进行一次转换:

 

/**

        *ejbCreate

        *@ejb.create-method

        * view-type="local"

        */

       public java.lang.IntegerejbCreate(UserDTO userDTO)throws CreateException{

              setName(userDTO.getName());

              setPassword(userDTO.getPassword());

              setEmail(userDTO.getEmail());

              setUser_id(userDTO.getUser_id());

              return null;

       }


 

 

        而EJB3的JPA技术就像Hibernate持久性框架类似,只需pojo+Annotation就能将Entity持久化到数据库中,从而简化了复杂性。

        

 

        从上面的内容我们能够看出来EJB3比EJB2简单许多,而且在一些关键技术上做出了修改,也就是这些修改的背后能够带给我们很多重要的东西,也许这些东西才是我们最需要的。

你可能感兴趣的:(EJB3的优点)