简短的问题,javaEE(wildfly,cdi)中的bean / instance如果在其中执行jpa查询(仅选择),或者我总是将@stateless用于jpa,那么它应该是@RequestScoped吗?
答案 0 :(得分:0)
我不明白这个问题。
如果您有业务层并且可以使用EJB,那么我会选择@Stateless
持有业务逻辑和JPA交互,并向客户端公开特定的业务接口。
在任何情况下,如果你只是做一个选择而没有别的,也许是为了在前端填充你的数据表,我建议你注释你的业务方法:
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public List<MyEntity> findByWhateverCriteria(String param) {
// business logic
}
为什么?因为您可以保存应用程序服务器资源
另一方面,如果由于上述原因,您只需要在前端显示数据并忘记它,那么@RequestScoped是合适的。