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