From the EJB3 spec, these are the new features in EJB3:
- Definition of the Java language metadata annotations that can be used to annotate EJB applications.These metadata annotations are targeted at simplifying the developer�s task,at reducing the number of program classes and interfaces the developer is required to implement, and at eliminating the need for the developer to provide an EJB deployment descriptor.
- Specification of programmatic defaults,including for metadata,to reduce the need for the developer to specify common,expected behaviors and requirements on the EJB container.A "configuration by exception" approach is taken whenever possible.
- Encapsulation of environmental dependencies and JNDI access through the use of annotations, dependency injection mechanisms, and simple lookup mechanisms.
- Simplification of the enterprise bean types.
- Elimination ofthe requirement for EJB component interfaces for session beans.The required business interface for a session bean can be a plain Java interface rather than an EJBObject, EJBLocalObject, or java.rmi.Remote interface.
- Elimination of the requirement for home interfaces for session beans.
- Simplification of entity persistence through the Java Persistence API.
- Support for light-weight domain modeling, including inheritance and polymorphism.
- Elimination of all required interfaces for persistent entities.
- Specification of Java language metadata annotations and XML deployment descriptor elements for the object/relational mapping of persistent entities.
- A query language for Java Persistence that is an extension to EJB QL, with addition of projection,explicit inner and outer join operations,bulk update and delete,subqueries,and group-by.
- Addition of a dynamic query capability and support for native SQL queries.
- An interceptor facility for session beans and message-driven beans.
- Reduction of the requirements for usage of checked exceptions.
- Elimination of the requirement for the implementation of callback interfaces.