ما هي أفضل طريقة للاحتفاظ بالبيانات في تطبيق Java Desktop؟

StackOverflow https://stackoverflow.com/questions/37271

  •  09-06-2019
  •  | 
  •  

سؤال

لدي شجرة كبيرة من كائنات Java في تطبيق سطح المكتب الخاص بي وأحاول تحديد أفضل طريقة لاستمرارها كملف في نظام الملفات.

بعض الأفكار التي كانت لدي هي:

  • قم بتدوير المُسلسل الخاص بي باستخدام DataOutputStream:وهذا من شأنه أن يمنحني أكبر قدر من السيطرة على ما هو موجود في الملف، ولكن على حساب الإدارة التفصيلية له.

  • التسلسل القديم المستقيم باستخدام ObjectOutputStream والفئات المختلفة ذات الصلة:أنا لا أبيعها على الرغم من أنني أجد البيانات هشة.يؤدي تغيير بنية أي كائن إلى كسر المثيلات المتسلسلة له.لذلك أنا عالق في ما يبدو أنه كابوس مروع للإصدار.

  • تسلسل XML:إنها ليست هشة، ولكنها أبطأ بشكل ملحوظ من التسلسل المباشر.يمكن تحويله خارج برنامجي.

  • جافا دي بي:لقد فكرت في هذا لأنني أشعر بالراحة في كتابة تطبيقات JDBC.الفرق هنا هو أن مثيل قاعدة البيانات سيستمر فقط أثناء فتح الملف أو حفظه.إنها ليست جميلة ولكن...إنه مناسب للانتقال إلى بنية الخادم المركزي إذا دعت الحاجة لاحقًا ويقدم إمكانية الاستعلام عن نموذج البيانات بطريقة أبسط.

أشعر بالفضول لمعرفة ما يعتقده الآخرون.وآمل أن أكون قد فاتني بعض الأساليب الواضحة والأبسط من تلك المذكورة أعلاه.


فيما يلي بعض الخيارات الإضافية المستمدة من الإجابات أدناه:

  • قاعدة بيانات الكائنات - يتمتع ببنية تحتية أقل بكثير من أساليب ORM ويعمل بشكل أسرع من أسلوب XML.شكرا اكو
هل كانت مفيدة؟

المحلول

db4objects قد يكون الخيار الأفضل

نصائح أخرى

سأختار خيارك النهائي JavaDB (توزيع Sun لـ ديربي) واستخدم طبقة علائقية للكائن مثل بيات شتوى أو إيباتيس.إن استخدام الأساليب الثلاثة الأولى يعني أنك ستقضي وقتًا أطول في بناء محرك قاعدة بيانات بدلاً من تطوير ميزات التطبيق.

قم بإلقاء نظرة على Hibernate كطريقة أبسط للتفاعل مع قاعدة البيانات.

في تجربتي، ربما يكون من الأفضل لك استخدام قاعدة بيانات مضمنة.SQL، على الرغم من أنها أقل من الكمال، عادة ما تكون أسهل بكثير من تصميم تنسيق ملف يعمل بشكل جيد وموثوق.

لم أستخدم JavaDB، ولكنني كنت محظوظًا به H2 و سكليتي.SQLite هي مكتبة C مما يعني المزيد من العمل فيما يتعلق بالنشر.ومع ذلك، فهو يتميز بتخزين قاعدة البيانات بأكملها في مكتبة واحدة مشتركة بين الأنظمة الأساسية.في الأساس، هو تنسيق ملف عام ومعبأ مسبقًا.لقد كان SQLite مفيدًا جدًا لدرجة أنني بدأت في استخدامه بدلاً من الملفات النصية في البرامج النصية.

كن حذرًا عند استخدام السبات إذا كنت تعمل مع مشكلة ثبات صغيرة.ويضيف الكثير من التعقيد والمكتبة العامة.يعد وضع السبات أمرًا رائعًا حقًا إذا كنت تعمل مع عدد كبير من الجداول، ولكن من المحتمل أن يكون مرهقًا إذا كنت تحتاج فقط إلى عدد قليل من الجداول.

XStream من موقع codehaus.org

تسلسل/إلغاء تسلسل XML إلى حد كبير بدون تشفير.يمكنك استخدام التعليقات التوضيحية لتعديلها.أعمل بشكل جيد في مشروعين حيث أعمل.

شاهد العرض التقديمي لمجموعة المستخدمين الخاصة بي على http://cjugaustralia.org/?p=61

أعتقد أن ذلك يعتمد على ما تحتاجه.دعونا نرى الخيارات:

1) تم التخلص منها على الفور!أنا لن حتى تبرير.:)

2) إذا كنت بحاجة إلى طريقة بسيطة وسريعة ومثابرة، فالتزم بها.وسوف يستمر الرسم البياني للبيانات كاملة كما هو!احذر من المدة التي ستستغرقها في صيانة الكائنات المستمرة.كما أشرت بنفسك، يمكن أن يكون الإصدار مشكلة.

3) أبطأ من (2)، ويحتاج إلى رمز إضافي ويمكن للمستخدم تعديله.سأستخدمها فقط حيث من المفترض أن يستخدمها العميل بلغة أخرى.

4) إذا كنت بحاجة إلى الاستعلام عن بياناتك بأي حال من الأحوال، فالتزم بحل قاعدة البيانات.

حسنًا ، أعتقد أنك قد أجبت على سؤالك بالفعل :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top