我正在设计一个访问许多数据库表的 web-application 。 我想弄清楚访问这些表的首选方法是什么? 是通过JPA还是EJB?
谢谢, 森
答案 0 :(得分:12)
答案是“两个”。
EJB本身不访问任何数据库表。您在Java中与数据库相关的所有操作都是通过Java持久性API(JPA)实现的,或者如果您想通过JDBC执行低级操作,但我们不会在此处进行操作。
EJB带来的是对事务的非常简单的管理。你总是需要那些有JPA的人,手动管理它们有点痛苦。 EJB还使您可以非常方便地访问将在JPA中与DB交互的主类:实体管理器。
在实践中使用EJB对于许多简单和轻量级的情况只不过是将@Stateless注释添加到bean中:
@Stateless
public class FooService {
@PersistenceContext
private EntityManager entityManager;
public Foo getByID(Long fooID) {
return entityManager.find(Foo.class, ID);
}
}
没有EJB,执行此简单查找的代码将更多更详细。没有JPA,根本就没有任何代码。如前所述,EJB没有访问数据库的功能。
答案 1 :(得分:0)
除非您实际构建企业系统并且需要增加EJB的复杂性,否则只需使用JPA。听起来像你刚刚建立一个Web应用程序,你需要简单的数据库访问 - 去JPA。我们使用OpenJPA,并且没有任何问题。