CDI Bean执行JPA查询

时间:2017-04-20 11:33:51

标签: java java-ee ejb cdi

简短的问题,javaEE(wildfly,cdi)中的bean / instance如果在其中执行jpa查询(仅选择),或者我总是将@stateless用于jpa,那么它应该是@RequestScoped吗?

1 个答案:

答案 0 :(得分:0)

我不明白这个问题。

如果您有业务层并且可以使用EJB,那么我会选择@Stateless持有业务逻辑和JPA交互,并向客户端公开特定的业务接口。

在任何情况下,如果你只是做一个选择而没有别的,也许是为了在前端填充你的数据表,我建议你注释你的业务方法:

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public List<MyEntity> findByWhateverCriteria(String param) {
  // business logic
}
为什么?因为您可以保存应用程序服务器资源

另一方面,如果由于上述原因,您只需要在前端显示数据并忘记它,那么@RequestScoped是合适的。