2009-06-10 9 views
16

मुझे अक्सर ऑब्जेक्ट्स के एक गुच्छा के लिए हल्के वजन (रनटाइम, निर्भरता की अवधि में) दृढ़ता समाधान की आवश्यकता होती है, मुख्य रूप से एप्लिकेशन पुनरारंभ के बीच।क्विक 'गंदे दृढ़ता

आमतौर पर मैं कुछ जावा धारावाहिक हैक का सहारा लेता हूं, लेकिन मुझे आश्चर्य है कि वहां कुछ बेहतर है या नहीं।

क्या आपने कुछ ऐसा ही उपयोग किया है?


यह स्पष्ट करने के लिए, एक जेपीए आधारित समाधान हल्के नहीं मेरी किताब में है, और एक JDBC आधारित एक त्वरित नहीं है।


अद्यतन: मैं उन जो विन्यास की आवश्यकता होती अधिक विन्यास कम चौखटे पक्ष में हैं। उदाहरण के लिए जावा धारावाहिक समाधान के लिए implements Serializable की आवश्यकता होती है और यह काम करता है। एक जेपीए समाधान, या तो एनोटेशन या मैपिंग फाइलों के साथ बहुत भारी वजन होगा।

अपडेट 2: बस इसे स्पष्ट करने के लिए, मुझे नहीं लगता कि सीरियलाइजेशन एक हैक है। यह वास्तव में एक बहुत ही शक्तिशाली तंत्र है, बस दृढ़ता से करते समय मैं इसे हैकिश तरीके से उपयोग कर रहा हूं।

+0

+1 प्रश्न के लिए मैं सवाल मैं Xstream के साथ जाने कहता था करने के लिए अद्यतन के आधार पर जल्द ही – KLE

उत्तर

10

मैं XStream पसंद करते हैं: केवल एक जार की जरूरत है, तेजी से और बहुत आसान उपयोग करने के लिए

+0

हां। XStream उपयोग करने के लिए बहुत आसान है। – Nat

+0

दिलचस्प- धन्यवाद –

+0

+1 दिलचस्प वास्तव में – KLE

5

iBatis आज़माएं। मैंने हाल ही में एक परियोजना पर इसका इस्तेमाल किया है जहां मैं एक जेडीबीसी अबास्ट्रक्शन w/o ओआरएम/वसंत/कंटेनर/आदि चाहता था।

सेटअप करने में आसान, केवल कुछ छोटे जार, और कॉन्फ़िगर बहुत लचीला है। यह आपको हाइबरनेट, एट के बदलाव-द-डी-ए-पलों-नोटिस लचीलापन नहीं देगा। अल। लेकिन यह काफी हल्का है।

+0

आवश्यकता हो सकती है। –

3

शायद db4o आप के लिए काम करेगा। नाम को मूर्ख मत बनो, इसे एम्बेड किया जा सकता है। its tutorial के अनुसार:

Object yourObject = ...; 

String fileName = ...; // where you wish to store the objects 
ObjectContainer container = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), fileName); 
try { 
    container.store(yourObject); 
} finally { 
    container.close(); 
} 
1

आप वस्तुओं

तो क्यों जावा क्रमांकन निर्माण में एक हैक है की बस एक गुच्छा के लिए

हठ समाधान के लिए लग रहा है?

यदि आप आलसी हैं तो शायद JSON के साथ धारावाहिक आपकी मदद करेगा।

+0

सीरियलाइजेशन एक हैक नहीं है। इसके साथ काम करने का मेरा तरीका है। तो मैं देख रहा हूं कि दूसरों को इस तरह की स्थिति कैसे संभालें, उनके अनुभव से आकर्षित करें। –

+0

क्रमबद्धता के बारे में बात करते समय, जेबॉस सीरियलाइजेशन की जांच करें जिसमें जेडीके के प्रभाव पर कई तकनीकी फायदे हैं। –

2

आपको जेएक्सबी को देखना चाहिए। यह जेआरई 6 के बाद जावा का हिस्सा है। इसका उपयोग करना बहुत आसान है और आपको अपने जावा ऑब्जेक्ट मॉडल से एक्सएमएल स्कीमा ड्राइव करने की अनुमति देता है। सबसे अच्छा हिस्सा यह है कि आपको किसी भी अतिरिक्त जार फ़ाइलों या पुस्तकालयों की आवश्यकता नहीं है क्योंकि यह जावा का हिस्सा है। Javax.xml.bin पैकेज देखें।JAXB परियोजना पर ही

जानकारी: JRE में Javadocs को https://jaxb.dev.java.net

लिंक: http://java.sun.com/javase/6/docs/api/javax/xml/bind/package-frame.html

1

Prevayler आप के लिए एक अच्छा विकल्प की तरह लगता है।

यह जावा क्रमबद्धता पर आधारित है और यह बहुत तेज़ है।

अधिक जानकारी पर:

  • http://www.prevayler.org/
  • http://www.prevayler.org/wiki/
3

मैं Jackson (json) जोड़ना होगा और JAXB (xml); एक्सस्ट्रीम के अलावा जो पहले से ही उल्लेख किया गया था। जैक्सन सिर्फ एक चेतावनी के साथ अच्छी तरह से काम करता है: यदि आपके पास व्यापक बहुलक भंडारण है, तो deserialization मुश्किल हो सकता है। यही वह जगह है जहां एक्सस्ट्रीम बेहतर काम करता है।

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

+0

उल्लेख करना भूल गए: जैक्सन को ज्यादातर मामलों में कोई भी कॉन्फ़िगरेशन की आवश्यकता नहीं है। यदि आप चाहते हैं, कॉन्फ़िगर करें आदि तो आप एनोटेशन का उपयोग कर सकते हैं; लेकिन अधिकांश भाग के लिए यह XStream कैसे काम करता है इसके समान शून्य-कॉन्फ़िगरेशन है। – StaxMan

1

चेक बाहर BeanKeeper (सूचना का एक ही राशि मानते हुए) - कि तेज, गंदे और सबसे आसान ओआरएम/दृढ़ता मैंने कभी देखा है। निश्चित रूप से iBatis धड़कता है जो निश्चित रूप से है।

Store myStore = new Store((DataSource) ctx.lookup("jdbc/myds")); 

package com.acme.bookstore; 
public class Book 
{ 
    private String title; 
    private Author author; 

    ...setters, getters... 
} 

package com.acme.bookstore; 
public class Author 
{ 
    private String firstName; 
    private String lastName; 
    private Date birthDate; 

    ...setters, getters... 
} 

store.save(book); 
2
  1. वस्तु संग्रह के लिए JDBM (एक जार) की कोशिश करो। आपको एक नक्शा देता है जो डिस्क पर संग्रहीत होता है।

    DB db = new DBMaker(fileName).build();

    Map<String,MyObject> map = db.createTreeMap("mapName")

    map.put("obj1", myObject1);

  2. config JAXB के लिए वास्तव में आसान है और निर्भरता नहीं है। एक्सएमएल में स्टोर।

    JAXB.marshall(myObject, new File("config.xml")); // saved. that's it

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