سؤال

أستخدم حاليًا الإصدار 3.1 من أدوات السبات؛لقد قمت بتخصيص اصطلاح التسمية وقوالب DAO.قاعدة البيانات (SQL Server 2005) في مرحلة التطوير المبكرة وأنا مسؤول عن إعادة بناء التعيينات والكيانات وDAOs والتكوين وأي شيء آخر.في كل مرة يتعين علي إجراء هندسة عكسية للجداول، وبالتالي أفقد كل التخصيصات التي أجريتها على التعيينات (ملفات *.hbm.xml) مثل ضبط هوية الأعمدة، واختيار الحقول المستخدمة في يساوي و إلى سلسلة.كنت أفكر في كتابة XML المختلف في ملف و"دمجه" في التعيين الذي تم إنشاؤه (انظر سؤالي ذات الصلة) ولكنني كنت أتساءل..هل هناك أي ممارسة/أداة أفضل للتعامل مع هذه المهام الحاسمة المزعجة والتي لا مفر منها؟

هل كانت مفيدة؟

المحلول

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

نحن نستخدم عمليات الترحيل لإدارة تغييرات قاعدة البيانات، ونقوم بتضمين التغييرات المرتبطة بها في ملف hbm.إذا كان Hibernate يمتلكه (أعتقد أنه كذلك) فقد ترغب في النظر في التعليقات التوضيحية بدلاً من hbm، فقد يكون من الأسهل صيانتها.

نصائح أخرى

لقد تأخر هذا عامين ونصف، لكنني سأقدم رأيا مخالفا.يجب أن تكون قادرًا على إجراء أي تخصيصات تحتاجها لملفات التعيين من خلال ملف hibernate.reveng.xml أو ReverseEngineeringStrategy المخصص.بالنسبة للفئات نفسها، يجب عليك دائمًا إنشاء فئات أساسية وتوسيعها بفئات تحتوي على تعليمات برمجية مخصصة.

على سبيل المثال، قم بإنشاء com.company.vo.generated.CustomerGenerated وقم بتوسيعه باستخدام com.company.vo.custom.Customer.يجب أن يقوم إنشاء التعليمات البرمجية بالكتابة فوق جميع الفئات في الحزمة التي تم إنشاؤها ولكن ليس في الحزمة المخصصة أبدًا (على الرغم من أنه يمكنك جعل أدوات السبات تنشئ هذه الفئات المخصصة في الدليل الهدف بحيث يمكنك نسخ ولصق الفراغات في الدليل المخصص حسب الحاجة).بهذه الطريقة يمكنك تجاوز أساليب يساوي، toString، وما إلى ذلك في الفئات المخصصة وعدم فقدان التغييرات عند التجديد.لاحظ أيضًا أن أفضل الممارسات هي عدم التحقق من التعليمات البرمجية التي تم إنشاؤها في SCM.

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

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