2015-11-20 3 views
5

मैं एक एल्गोरिथ्म के अनुकूलन की प्रक्रिया में हूँ बंद करने से बचने के लिए, और मैंने देखा है कि हाइबरनेट बनाता है और रिलीज अद्यतन बयान बार-बार उसका पुनः उपयोग करने के बजाय। ये सभी एक ही प्रश्न से हैं।स्प्रिंग हाइबरनेट, बयान दर्ज करने और repeatively

15:57:31,589 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ... 
15:57:31,591 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ... 
15:57:31,592 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ... 
15:57:31,592 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE] 
15:57:31,594 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ... 
15:57:31,595 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ... 
15:57:31,596 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ... 
15:57:31,596 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE] 
15:57:31,597 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ... 
15:57:31,599 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ... 
15:57:31,600 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ... 
15:57:31,601 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE] 

एल्गोरिथ्म के मुख्य विधि एक @Scope और एक @Transactional एनोटेशन है। अपेक्षित व्यवहार है कि, कुछ भी गलत हो जाता है, एल्गोरिथ्म के अपडेट ROLLBACK हो रहा है।

नीचे, एल्गोरिदम @Service का उपयोग करता है जिसमें एक अलग @Scope है और @Transactional भी है। सेवा हाइबरनेट का उपयोग कर डेटाबेस अद्यतन करने, session.update(entity) साथ एक है। दस्तावेज कहता है कि, डिफ़ॉल्ट रूप से, घोंसला लेनदेन लेनदेन का पुन: उपयोग करते हैं यदि यह मौजूद है।

  • क्या यह पुष्टि सही से ऊपर है?
  • गुंजाइश परिवर्तन समस्या पैदा कर सकते हैं?
  • मैं कैसे हाइबरनेट लेनदेन के दौरान बयान का पुन: उपयोग हो सकता है?

आपका ध्यान

उत्तर

5

आपकी समझ सही है के लिए धन्यवाद। दायरा लेनदेन के प्रचार से संबंधित नहीं है, वसंत को अपने बीन्स को प्रॉक्सी के साथ लपेटना चाहिए जो दायरे के बावजूद लेनदेन को नियंत्रित करता है।

जब हाइबरनेट का उपयोग कर बयान का पुन: उपयोग करने के लिए कोई तरीका नहीं है। जेडीबीसी कोड मैन्युअल रूप से लिखते समय भी इस तरह की दृष्टिकोण बलों के कोड को उलझाने के कारण अनुशंसित दृष्टिकोण नहीं है। इसका सामान्य जवाब जेडीबीसी कनेक्शन पूल पर तैयार कथन कैश का उपयोग करना है। अपाचे DBCP साथ उदाहरण के लिए पूल आपको लगता है कि नियंत्रित करने के लिए poolPreparedStatements और maxOpenPreparedStatements उपयोग कर सकते हैं। एप्लिकेशन सर्वर के साथ बंडल किए गए पूल में समान सेटिंग्स होती हैं।

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