【发布时间】:2011-01-09 12:30:08
【问题描述】:
我正在设计一个访问许多数据库表的网络应用程序。 我想弄清楚访问这些表的首选方式是什么? 是通过 JPA 还是 EJB?
谢谢, 内森
【问题讨论】:
标签: web-applications ejb jpa-2.0
我正在设计一个访问许多数据库表的网络应用程序。 我想弄清楚访问这些表的首选方式是什么? 是通过 JPA 还是 EJB?
谢谢, 内森
【问题讨论】:
标签: web-applications ejb jpa-2.0
答案是“两者”。
EJB 本身不访问任何数据库表。您在 Java 中所做的与 DB 相关的所有操作都是通过 Java Persistence API (JPA) 进行的,或者如果您想通过 JDBC 进行低级别的操作,但我们不在这里讨论。
EJB 带来的好处是非常容易管理事务。你总是需要那些有 JPA 的,手动管理这些有点痛苦。 EJB 还使您可以非常轻松地访问将在 JPA 中用于与 DB 交互的主类:实体管理器。
在实践中使用 EJB 是针对很多简单轻量级的情况,只不过是在 bean 中添加 @Stateless 注解:
@Stateless
public class FooService {
@PersistenceContext
private EntityManager entityManager;
public Foo getByID(Long fooID) {
return entityManager.find(Foo.class, ID);
}
}
如果没有 EJB,执行这个简单查找的代码会非常更加冗长。如果没有 JPA,根本就不会有任何代码。如前所述,EJB 没有访问数据库的功能。
【讨论】:
除非您实际构建企业系统并且需要增加 EJB 的复杂性,否则只需使用 JPA。在我看来,您只是在构建一个 Web 应用程序,并且您需要简单的数据库访问 - 选择 JPA。我们使用OpenJPA,没有任何问题。
【讨论】: