2010-05-20 13 views
8

मैं ObjectOutputStream पर बनाना चाहता हूं, लेकिन मैं ऑब्जेक्ट को फ़ाइल में नहीं रखना चाहता, तो यह कैसे करें? सभी ट्यूटोरियल (है कि मैं पाया जाता है) केवल फ़ाइल तरीके के बारे में कहते हैं:किसी ऑब्जेक्ट से ऑब्जेक्ट आउटपुट स्ट्रीम बनाएं

 FileOutputStream fos = new FileOutputStream("t.tmp"); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(new Date()); 
     oos.close(); 

मैं एक डेटाबेस में वस्तु संग्रहीत करना चाहते हैं, तो मैं वर्ग PreparedStatement से विधि setBinaryStream() में एक धारा को निर्दिष्ट करने की जरूरत है।

जवाब देने के लिए धन्यवाद ...

उत्तर

7

इसके बजाए इसे बाइट सरणी में स्टोर करें। इसके लिए आप ByteArrayOutputStream का उपयोग कर सकते हैं। इस तरह आप PreparedStatement#setBytes() का उपयोग कर सकते हैं।

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ObjectOutputStream oos = new ObjectOutputStream(baos); 
oos.writeObject(new Date()); 
oos.close(); 
// ... 
preparedStatement.setBytes(i, baos.toByteArray()); 

जिसके अनुसार, यह बहुत एक अच्छा गंध है। क्या आप वाकई जावा ऑब्जेक्ट को डेटाबेस में क्रमबद्ध करने की आवश्यकता है? इस तरह वे अविभाज्य और अदृश्य हैं। यदि आप उदाहरण के लिए डीबी में क्रमशः प्रत्येक Person स्टोर करते हैं, तो आप अब SELECT * FROM person WHERE name = 'John' नहीं कर सकते हैं। सामान्य अभ्यास इकाई और डीबी तालिका का 1: 1 मैपिंग करना है। उदाहरण के लिए Date पूरी तरह से DATETIME/TIMESTAMP कॉलम में संग्रहीत किया जा सकता है।

+0

मुझे निश्चित रूप से पता है कि यह एक अच्छा अभ्यास नहीं है, जो मेरी राय में प्रोग्रामिंग के इस तरीके को जानने के लिए कोई औचित्य नहीं है :-) – coubeatczech

+0

ठीक है, मान लीजिए कि आप जानते हैं कि आप क्या कर रहे हैं :) आपका स्वागत है। – BalusC

5
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

ObjectOutputStream os = new ObjectOutputStream(bos); 
os.writeObject(new Date()); 
os.close(); 

byte[] data = bos.toByteArray(); 

तो अब आप एक बाइट सरणी है और क्या आप इसके साथ चाहते हैं।

0

आपको विशेष रूप से किसी डेटाबेस को लिखने के लिए आउटपुटस्ट्रीम का उपयोग करने की आवश्यकता है? आउटपुटस्ट्रीम कार्यान्वयन लिखने का प्रयास करने से पहले मैं दृढ़ता से एपीआई को देखने पर गंभीरता से विचार करता हूं .. कनेक्शन विवरण आदि के बाद, प्रबंधन के लिए मुश्किल हो सकती है।

link text पर एक नज़र डालें और याद रखें कि इसका उपयोग जे 2 एसई में भी किया जा सकता है।