سؤال

أنا مهتم بكيفية hibernate.hbm2ddl.auto = التحقق من صحة يعمل فعليًا وأنا أجد صعوبة في العثور على وثائق شاملة.

لقد اكتشفنا مؤخرًا تأثر نظام الإنتاج بـ http://opensource.atlassian.com/projects/hibernate/browse/hhh-3532 (يطابق Hibernate المفاتيح الأجنبية على الاسم ، بدلاً من التوقيع ، وبالتالي سيتم إعادة إنشائها من أجلك) و hibernate.hbm2ddl.auto = تحديث يتم إزالة التحديث من الإصدار التالي.

سأكون سعيدًا جدًا بالتخلص من hibernate.hbm2ddl.auto تمامًا وإدارة قاعدة بياناتنا بأنفسنا. ومع ذلك ، لا يشترك جميع زملائي في هذه النظرة العالمية وبعضها حريص على إضافة hibernate.hbm2ddl.auto = التحقق من صحة.

أنا قلق من أن هذا سيضرب نفس المشكلة وأنا مهتم بالعثور على المزيد من الوثائق حول كيفية عمل هذا التحقق بالفعل. وثائق مجتمع السبات (http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html) حقا مجرد الإشارة إلى القيم.

هل لدى أي شخص أي مؤشرات توثيق جيدة ، أو أي تجربة حياة حقيقية لاستخدام التحقق من صحة في نظام الإنتاج؟

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

المحلول

أنا قلق من أن هذا سيضرب نفس المشكلة وأنا مهتم بالعثور على المزيد من الوثائق حول كيفية عمل هذا التحقق بالفعل.

في رأيي ، فإن أفضل الوثائق هي الرمز المصدري الذي يمكنك التحقق منه لمعرفة ما يحدث بالضبط. الطريقة ذات الصلة هي org.hibernate.tool.hbm2ddl.SchemaValidator#validate().

ذهبت بسرعة من خلال الكود و أنا لا تعتقد أن SchemaValidator يتحقق من المفاتيح الأجنبية في قاعدة البيانات: يتحقق من وجود الجداول والأعمدة ومولدات الهوية ولكن ليس مفاتيح أجنبية. يبدو أن اختبارًا مقابل قاعدة بيانات PET يؤكد هذا السلوك: إن إسقاط قيود FK لا يكسر التحقق من صحة المخطط (بمعنى آخر ، يتحقق المدقق إذا كان بإمكان التطبيق تشغيل ، وليس للنزاهة المرجعية).

حاليا، HHH-3532 كونها ثابتة على أنها ثابتة ، لماذا لا ترقية إلى إصدار أحدث من Hibernate أو ، إذا كان تغيير إصدار السبات ثقيلًا جدًا ، فلماذا لا تطبق التصحيح لـ HHH-3532 نفسك؟

قول كل ذلك ، أنا لا تستخدم hibernate.hbm2ddl.auto=update لتحديث قواعد بيانات الإنتاج ، أستخدم البرامج النصية تغيير. ولكن أنا استعمال hibernate.hbm2ddl.auto=validate وأنا سعيد بها.

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