2012-05-29 22 views
7

सेट करने से क्या मिलता है मुझे इस रचना का उपयोग करने वाले उदाहरण मिलते हैं हालांकि मुझे यकीन नहीं है कि मुझे इससे क्या मिल सकता है?मुझे यह TransactionAttributeType.NOT_SUPPORTED

क्या इसका मतलब यह है कि एक स्टेटलेस ईजेबी में सभी चुनिंदा वक्तव्यों का पालन करना चाहिए?

@Stateless 
public class EmployeeFacade { 
    @PersistenceContext(unitName="EmployeeService") 
    EntityManager em; 

    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
    public List<Department> findAllEmployees() { 
     return em.createQuery("SELECT e FROM Employee e", 
     Employee.class) 
     .getResultList(); 
    } 

मुझे इससे क्या मिलता है?

धन्यवाद।

उत्तर

6

क्या आप प्राप्त है: बताने के लिए

  1. अपेक्षाकृत औपचारिक तरीका है कि अपने विधि लेन-देन की जरूरत नहीं है (परिणाम के रूप में आप उदाहरण है कि यह जारी रहती कॉल करेंगे नहीं, विलय या EntityManager में हटाने के लिए जानते हैं)।
  2. कुछ मामलों में संभावित प्रदर्शन अनुकूलन।
    • लेनदेन बनाने/पास करने की कोई आवश्यकता नहीं है। Java EE 5 Tutorial के अनुसार: "क्योंकि लेनदेन में ओवरहेड शामिल है, यह विशेषता प्रदर्शन में सुधार कर सकती है।"
    • अन्य स्रोतों के अनुसार (उदाहरण के लिए प्रो जेपीए 2) यह प्रबंधित इकाइयों को प्रबंधित करने के लिए कार्यान्वयन की संभावना प्रदान करता है (जो कि अलग-अलग इकाइयों को बनाने की तुलना में भारी संचालन की संभावना है)।
+1

EntityManager लेनदेन के बिना क्वेरी निष्पादित करता है?/उलझन में / –