2017-04-20 61 views
0

如果javaEE(wildfly,cdi)中的bean /實例在其內部執行jpa查詢(僅選擇)時應該是@RequestScoped還是應該始終對jpa使用@stateless?執行JPA查詢的CDI Bean

回答

0

我不明白這個問題的重點。

如果你有一個業務層和使用EJB的可能性,我會去持有@Stateless持有業務邏輯和JPA交互,並將特定的業務接口公開給客戶端。

在任何情況下,如果你只是在做一個選擇,沒有別的,也許對前端盡顯你的數據表,我建議來註釋業務方法是這樣的:

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

爲什麼呢?因爲你可以保存應用服務器資源。

另一方面,如果出於上述相同的原因,只需在前端顯示數據並忘記它,則@RequestScoped就是合適的。