मॉडल वर्गों में javafx.beans गुणों का उपयोग करना



Answers

जावाएफएक्स संपत्ति डिजाइन

जावाएफएक्स गुण इस प्रकार डिज़ाइन किए गए हैं कि आपको उनका उपयोग करने के लिए जावाएफएक्स प्रोग्राम चलाने की आवश्यकता नहीं है। जावाएफएक्स प्रॉपर्टीज और बाइंडिंग ट्यूटोरियल का उपयोग करते हुए ओरेकल के अनुभाग, इस तरह के उपयोग को प्रदर्शित करते हैं (उदाहरण के लिए बिल के गुणों को मॉडल करने के लिए एक बिल क्लास)। ट्यूटोरियल से नमूना सिर्फ एक मानक जावा प्रोग्राम चलाता है जिसमें जावाफैक्स एप्लीकेशन नहीं है। तो आप JavaFX रनटाइम पर अतिरिक्त आवश्यकता के बिना सामान्य रूप से गुणों और बाध्यकारी का उपयोग कर सकते हैं। इसका मतलब है कि आप उदाहरण के लिए, सर्वर पक्ष अनुप्रयोग में जावाएफएक्स गुणों और बाइंडिंग का उपयोग कर सकते हैं।

"सही" व्यवहार

ठीक है, तो आप इसे कर सकते हैं, लेकिन क्या यह "सही" अभ्यास है?

मुझे नहीं लगता कि बहुत से लोग इस तरह जावाएफएक्स गुणों का उपयोग करते हैं। इसका एक कारण बस इसलिए है क्योंकि जावाएफएक्स गुण काफी नए हैं। मुझे नहीं लगता कि यह मॉडल ऑब्जेक्ट्स में जावाएफएक्स गुणों का उपयोग करने के लिए "गलत" है।

चेतावनियां

जावाएफएक्स गुण जावा क्रमबद्धता का समर्थन नहीं करते हैं (इसके द्वारा मेरा मतलब है Serializable इंटरफ़ेस के लिए प्रत्यक्ष समर्थन)। कई सर्वर पक्ष जावा प्रौद्योगिकियों को मॉडल क्रमिकरण की आवश्यकता हो सकती है और वे किसी भी ऑब्जेक्ट को क्रमबद्ध करने में असमर्थ होंगे जो JavaFX गुणों का उपयोग करता है।

जावाएफएक्स गुण स्वयं कंटेनर के बारे में जागरूक नहीं हैं और साइड इफेक्ट्स के माध्यम से काम करते हैं (उदाहरण के लिए एक संपत्ति बदलना किसी अन्य बाध्य मूल्य पर अपडेट ट्रिगर कर सकता है), इसलिए इस बारे में जागरूक रहें और सुनिश्चित करें कि इस तरह की प्रसंस्करण आपके पर्यावरण में एक स्वीकार्य दृष्टिकोण है। विशेष रूप से, सावधान रहें कि आप बहु-थ्रेडेड सर्वर वातावरण में अवांछित दौड़ की स्थिति उत्पन्न नहीं करते हैं (जावाएफएक्स क्लाइंट अनुप्रयोगों को आम तौर पर जावाफ़ैक्स के रूप में सामान्य रूप से एक थ्रेडेड वातावरण के रूप में चलाने के लिए कम देखभाल की आवश्यकता होती है)।

जावाएफएक्स गुण और हाइबरनेट / जेपीए

मुझे नहीं लगता कि जावाफैक्स गुणों को हाइबरनेट (या जेपीए) इकाई वर्गों में मिलाकर एक अच्छा विचार है। मैंने किसी को ऐसा नहीं देखा है। खुद को हाइबरनेट स्वयं जावाएफएक्स गुणों से अवगत नहीं है और सामान्य रूप से स्ट्रिंग्स और इन्ट्स जैसे जावा प्राइमेटिव्स के खिलाफ काम करने के लिए डिज़ाइन किया गया है, इसलिए मुझे नहीं पता कि यह संभवतः जावाफ़ैक्स प्रॉपर्टी को डेटाबेस फ़ील्ड में कैसे मैप कर सकता है।

आपको संभवतः एक सेटअप की आवश्यकता होगी जो आपकी इकाई वर्ग पदानुक्रम और आपके जावाएफएक्स संपत्ति आधारित मॉडल कक्षाओं के लिए समानांतर पदानुक्रम परिभाषित करे और आखिरकार एक मैपर परत जो दोनों के बीच मैप की गई हो। इस प्रकार का वास्तुशिल्प सेटअप अनिवार्य रूप से एक एमवीवीएम मॉडल है । मॉडल (एम) आपकी हाइबरनेट इकाई वर्ग है, और दृश्य मॉडल (वीएम) आपका जावाएफएक्स संपत्ति आधारित मॉडल है।

Question

मॉडल वर्गों में जावाएफएक्स बीन्स गुणों का उपयोग करने के लिए यह सही अभ्यास है?

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

नोट: मैं एक शुद्ध जावाएफएक्स पर्यावरण का उपयोग करता हूं और मुझे अपने आवेदन में स्विंग कॉम्पेबिलिटी की आवश्यकता नहीं होगी।






Links