我想尝试EJB,并正在研究EJB 3.0的理论。我知道在EJB 3.0中,您不必使用部署描述符,而是可以使用注释,也不必编写 Home 和 Remote 接口。 除了这些,EJB 2.0 和 EJB 3.0 之间还有其他关键的面向对象方面的区别吗?
以下是EJB 2.0和3.0的主要区别: EJB 3.0取消了home接口,使查找过程比EJB 2.0更简单。 使用注解使得EJB 3.0成为最新技术,而EJB 2.0则使用home和remote接口。 EJB 2.0部署实体bean来访问数据库。EJB 3.0有Java Persistence API来访问数据,它被普遍使用以解决可移植性问题。 EJB 3.0使用POJO和元数据注释(一种新的引入)相结合,因此性能更好。POJO比EJB 2.0用于对象引用的XMLDescriptor和JNDI更快,而且EJB 2.0并未实现POJO。 当写home和remote接口时,EJB 2.0非常繁琐。EJB 3.0没有限制使用任何标准接口,它是一个配置良好、简单的POJO,并且不需要执行容器回调方法,如ejbActive、ejbStore等,这些方法是EJB 2.0使用的。 在EJB 3.0中,实体bean可以轻松地转换为DAO,反之亦然。而在EJB 2.0中不可能做到。希望对您有所帮助。
您说得对,这些是EJB 2和3之间的主要区别。一般来说,EJB 3吸收了轻量级注入框架(如Spring)的所有优点,并使EJB尽可能接近普通POJO。然而,今天已经是2013年中期了,为什么您还想知道EJB2和EJB3之间的区别呢?EJB2已经过时了。学习3.x版本,忘记旧版本。现在学习EJB 2就像在汽车发明之前学习骑马一样,因为人们曾经使用马作为交通工具。