
作者 Reza Rahman 摘自http://www.theserverside.com
This
series of articles is a preview of the changes the EJB 3.1 expert group
is working on for the next version of the Java EE specification. The
idea is to give you a head's up on the changes as well as gather your
feedback early so the expert group has the best chance of getting it
right. EJB 3.0 brought simplicity to Java EE 5 by moving away from a
heavyweight programming model. EJB 3.1 aims to build on those successes
by moving further down the path of simplicity as well as adding a
handful of much-needed features. In each article in this series, I will
let you know about the progress made by the expert group over the next
few months.
In this first article, I'll cover the two features that
have been discussed in detail so far--making interfaces optional for
EJBs and Singleton Beans. I'll also give you a look-ahead into the
possible features yet to be discussed. Remember, none of this has been
finalized yet; all of this is really just a peek into the inner
workings of the JCP so that you have a chance provide early feedback.
The very first change the expert group covered was removing the last remaining obstacle to making EJBs look just like POJOs in their simplest form by making Session Bean business interfaces optional.
Interface-based programming is clearly a useful technique in writing loosely-coupled, unit-testable applications. That is precisely why both EJB 2.1 and Spring promote the idea of component interfaces. In fact, at least one interface is required even for EJB 3.0 Session Beans (this is not a requirement for EJB 3.0 Message Driven Beans).
The trouble is that component interfaces are just a needless abstraction in a lot of circumstances. I can't remember the times I silently cursed under my breath as I carried out the mechanical task of writing interfaces just because the framework needed it or the architect sitting in some ivory tower mandated it. A lot of times, just a regular Java object is really all you need for your foreseeable needs, especially if you don't really do much unit testing and loose-coupling is just not enough of a concern for the application.
EJB 3.1 allows you to do just that. Now you do not need any interfaces for Session Beans, just like JPA Entities and Message Driven Beans. All you have to do is annotate a POJO with the @Stateless or @Stateful to get a fully functional EJB. Take a look at the example below modified from the Session Bean chapter in EJB 3 in Action:
@Stateless public class PlaceBidBean ...{@PersistenceContext
private EntityManager entityManager;
public void placeBid (Bid bid) ...{
entityManager.persist(bid);
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)