Tom*_*icz 16
JPA是EJB 3.0的一部分吗?
是和否...... 是的,因为声称实现EJB 3.0规范的每个应用程序服务器也必须提供JPA实现.不,因为JPA可以很容易地在EJB之外,在独立应用程序或Spring管理的应用程序中.
JPA操纵实体豆?
实体bean在3.0之前的EJB中是一个可怕的想法.JPA使用术语实体来区分可耻的历史.但是,JPA实体是一种将数据库表映射到普通Java对象的方法.原则上,对对象的更改会传播到数据库,反之亦然(过度简化).
正如我所说,JPA对EJB(被视为无状态和有状态会话bean)没有任何依赖性,反之亦然.但是没有什么能阻止你在EJB中使用JPA.
在您的场景中,您将拥有一个无状态EJB构建查询并通过JPA与数据库交互.从技术上讲,您将调用EntityManager注入到bean的方法:
@Stateless
public class SearchService {
@PersistenceContext
private EntityManager em;
public List<User> findUsersBornAfter(Date date) {
return em.
createQuery("SELECT u FROM User u WHERE u.birthDate > :birthDate ORDER BY name").
setParameter("birthDate", date).
getResultList();
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,业务层(显然)知道数据模型,但就实体而言,不依赖于EJB /业务服务.在此示例中,JPQL(查询)在服务层中形成,并且User是JPA实体.调用getResultList()会导致JPA提供程序将JPQL转换为SQL,运行查询并将结果转换回User对象实例.
EJB和JPA之间的边界现在是否清晰?
| 归档时间: |
|
| 查看次数: |
8644 次 |
| 最近记录: |