【问题标题】:CDI Bean with executing JPA queries执行 JPA 查询的 CDI Bean
【发布时间】:2017-04-20 11:33:50
【问题描述】:

简短的问题,如果 javaEE(wildfly,cdi)中的 bean/instance 在内部执行 jpa 查询(仅选择),它应该是 @RequestScoped 还是我应该总是使用 @stateless 来处理 jpa?

【问题讨论】:

    标签: java jakarta-ee ejb cdi


    【解决方案1】:

    我不明白这个问题的重点。

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

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

    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public List<MyEntity> findByWhateverCriteria(String param) {
      // business logic
    }
    

    为什么?因为可以节省应用服务器资源。

    另一方面,如果出于与上述相同的原因,您只需要在前端显示数据并忘记它,则使用 @RequestScoped 是合适的。

    【讨论】:

      猜你喜欢
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 2014-04-21
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多