2011-01-09 54 views

回答

12

答案是 '双方'。

EJB本身不访问任何数据库表。您在Java中与数据库相关的所有事情都是通过Java持久性API(JPA)发生的,或者如果您想通过JDBC执行低级别的事情,但我们不要在此处介绍。

EJB为表格带来的是一种非常简单的事务管理。您总是需要那些使用JPA的人,并且手动管理这些有点痛苦。 EJB还使您可以非常方便地访问您将在JPA中用于与数据库进行交互的主类:实体管理器。

在实践中使用EJB是一个很大的简单,重量轻的情况下没有什么比添加@Stateless注释到豆更多:

@Stateless 
public class FooService { 

    @PersistenceContext 
    private EntityManager entityManager; 

    public Foo getByID(Long fooID) { 
     return entityManager.find(Foo.class, ID); 
    } 
} 

没有EJB,代码做这个简单的查找是更详细。没有JPA,就没有任何代码。如前所述,EJB没有访问数据库的功能。

0

除非您实际构建企业系统并且需要增加EJB的复杂性,否则只需使用JPA即可。这听起来像你刚刚构建一个Web应用程序,你需要简单的数据库访问 - 去JPA。我们使用OpenJPA,并没有问题。

+3

我并不完全同意这一点。 EJB不增加复杂性,它带走了复杂性。在任何符合Web配置文件的服务器中,您只需向bean添加@Stateless注释即可。手动使用JPA必须最后用try catch包围每个操作,事务的开始执行检查,并提交或回滚并关闭会话。与我只添加一个@Stateless注释相比,这在我的书中很复杂。最基本的Web应用程序从EJB中受益匪浅。这就是为什么它是Web Profile的一部分,并通过Resin等超轻量级服务器实现。 – 2011-01-09 17:26:56

相关问题