2013-05-22 7 views
11

वर्तमान में हमारे पास जावा ईई सिस्टम है जहां हम जेपीए का उपयोग करके हमारे डेटाबेस में मैपिंग कर रहे हैं। यह लगभग 20 इकाइयों के साथ एक काफी अच्छी तरह से विकसित प्रणाली है।जेपीए और टेबल दृश्य। क्या यह किया जा सकता है?

अब हमें सबकुछ के लिए दृश्यों का उपयोग करने का आदेश दिया गया है। उदाहरण: यदि हमारे पास PERMISSION नामक एक तालिका है तो हमें PERMISSION_VIEW नामक एक दृश्य की भी आवश्यकता है। असल में हमें इसे प्रत्येक तालिका में करने की ज़रूरत है, और हमारे एप्लिकेशन केवल दृश्य पूछकर डेटा तक पहुंच सकते हैं।

अब हमारे सभी इकाई सेम इस तरह दिखेगा:

@Entity 
@Table(name = "PERMISSION") 
@NamedQueries({ 
     @NamedQuery(name = "Permission.findByPK", query = "SELECT p FROM Permission p WHERE p.dpNum = :dpNumber"), 
     @NamedQuery(name = "Permission.deleteAll", query = "DELETE FROM Permission") }) 
public class Permission implements Serializable { 

} 
  • सबसे पहले, यह कैसे टेबल अद्यतन करने के लिए यदि संभव हो तो आप केवल दृश्य का उपयोग करने के लिए अनुमति दी जाती है। क्या सामग्री के दृश्य इस के लिए काम कर सकते हैं?
  • दूसरा, अगर हम केवल दृश्यों का उपयोग कर सकते हैं, तो कितनी पुनर्लेखन की आवश्यकता होगी? उदाहरण के लिए। प्रत्येक प्रविष्टि के लिए हमें @Table (name = "PERMISSION_VIEW") लिखने की आवश्यकता होगी, इकाई का वर्णन करने के लिए, लेकिन, जब कोई अद्यतन कर रहा है तो उसे PERMISSION तालिका में ऐसा करने की आवश्यकता है। पृथ्वी पर कैसे आप इसे एक इकाई बीन में समेकित करते हैं?
+0

कृपया ऑफटॉप प्रश्न पूछें, लेकिन किसी को ऐसा क्यों करना चाहिए? – kostja

+1

मैं एक बड़े संगठन में काम करता हूं, और हमारे पास कहीं से किसी से लिखा गया कुछ डेटाबेस दिशानिर्देश हैं जो कहता है कि हमें सुरक्षा, और प्रबंधन उद्देश्यों के लिए विचारों का उपयोग करने की आवश्यकता है। –

+2

आपके आवेदन को स्पष्ट रूप से डेटाबेस तक पहुंच पहुंच की आवश्यकता है। मुझे नहीं लगता कि कौन सी सुरक्षा, या अन्य, यह लाभ प्रदान करता है यदि आपके विचारों में आपकी सारणी के समान डेटा शामिल है। –

उत्तर

5

अधिकांश आधुनिक आरडीबीएमएस डालने योग्य और अद्यतन करने योग्य विचारों का समर्थन करते हैं। यदि आपका आरडीबीएमएस इसका समर्थन करता है, तो आपको कोई समस्या नहीं होनी चाहिए। एक तालिका के समान एक दृश्य किसी भी आरडीबीएमएस में अद्यतन करने योग्य होना चाहिए जो ऐसे विचारों का समर्थन करता है। तो आपको केवल अपने मानचित्रण को बदलने और दृश्य नामों के साथ तालिका नामों को बदलने की आवश्यकता है।

+0

जब तक जेपीए कार्यान्वयन भी विचारों का समर्थन करता है (जो कुछ करते हैं, डेटा न्यूक्लियस जेपीए निश्चित रूप से करता है) – DataNucleus

+2

मुझे पता है कि सभी जेपीए कार्यान्वयन जेडीबीसी पर आधारित हैं। एसक्यूएल कथन एक जैसा होगा (टी में डालें ...) भले ही टी एक टेबल या दृश्य है। यही कारण है कि मुझे लगता है कि यह केवल अद्यतन करने योग्य दृश्य का समर्थन करने के लिए आरडीबीएमएस पर निर्भर करता है, जबकि जेपीए कार्यान्वयन को इसके बारे में जानने की आवश्यकता नहीं है। जब तक मैं कुछ याद नहीं कर रहा हूँ। – nakosspy

11

JPA और डेटाबेस दृश्य देख के बारे में अधिक जानकारी के लिए, http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#Views

जेपीए में आप एक VIEW एक मेज के रूप में ही करने के लिए नक्शे @Table एनोटेशन का उपयोग कर सकते हैं। फिर आप प्रत्येक ऑब्जेक्ट को दृश्य में अपने ऑब्जेक्ट के गुणों पर मैप कर सकते हैं। दृश्य आमतौर पर केवल पढ़ने के लिए होते हैं, इसलिए ऑब्जेक्ट्स के मैपिंग को आम तौर पर केवल पढ़ने के लिए ही किया जाता है। अधिकांश डेटाबेस दृश्यों में यह भी तय किया जा सकता है कि क्वेरी के लिए कितना जटिल है कि वे encapsulate है। जटिल प्रश्नों के लिए भी डेटाबेस ट्रिगर आमतौर पर दृश्य में अद्यतन करने के लिए उपयोग किया जा सकता है।

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