2015-10-07 7 views
5

मैं JPA मैपिंग्स का उपयोग करता हूं।वसंत डेटा REST - @PrePersist और @HandleBeforeCreate के बीच अंतर?

जेपीए डीबी में एन इकाई की दृढ़ता से पहले बुलाए जाने वाले तरीकों के लिए @PrePersist एनोटेशन प्रदान करता है।

स्प्रिंग डेटा रेस्ट एक इकाई निर्माण घटना को पकड़ते समय कॉल करने के लिए @HandleBeforeCreate एनोटेशन प्रदान करता है।

यह मेरे समकक्ष लगता है। मुझे कब उपयोग करना चाहिए और मुझे दूसरे का उपयोग कब करना चाहिए?

उत्तर

5
  1. @ हैंडलबेयरक्रेट केवल तभी कहा जाता है जब एक आरईएसटी अनुरोध आता है लेकिन @PrePersist को संस्थाओं के जीवनकाल के दौरान बुलाया जाता है। इसलिए, यदि आपका कॉल पथ आरईएसटी के माध्यम से नहीं है (उदाहरण के लिए इकाई प्रबंधक को सीधे या जेपीए इम्प्लेक्स के आंतरिक कैस्केडिंग ऑपरेशंस के कारण) आप @HandleBeforeCreate के साथ ईवेंट को नहीं पकड़ सकते हैं।
  2. चूंकि @HandleBeforeCreate को वसंत द्वारा बुलाया जाता है, इसलिए इसे एक बीन में रखना और इसके लिए सभी स्प्रिंग सुविधाओं का आनंद लेना आसान है। इकाई श्रोता की जीवनशैली जेपीए इम्प्लायर द्वारा प्रबंधित की जाती है, इसलिए इसे आमतौर पर स्प्रिंग पारिस्थितिक तंत्र में वायर्ड होने के लिए कुछ चाल की आवश्यकता होती है।

उदाहरण के लिए, मैं @PrePersist की बजाय @HandleBeforeCreate का उपयोग सुरक्षा जांच जैसे कुछ के लिए करता हूं। चूंकि आइटम 1 के कारण, मैं केवल शेष परिचालन परिचालनों के लिए सुरक्षा की जांच करना चाहता हूं और आइटम 2 के कारण, मैं चेक करने के लिए अपने तरीकों के साथ आसानी से @ सुरक्षित या @PreAuth एनोटेशन का उपयोग कर सकता हूं।

+0

इस उदाहरण के लिए धन्यवाद! –

संबंधित मुद्दे