كيفية creata مخطط قاعدة البيانات باستخدام السبات

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

سؤال

بعد القراءة السبات:hbm2ddl.السيارات=تحديث في الإنتاج ؟ بعض الأسئلة نشأت.أولا وقبل كل شيء ، والسبب أنا باستخدام السبات هو أن تكون قاعدة البيانات بائع مستقلة (لا حاجة لكتابة 10 إصدارات من "نفس" استعلام sql, على سبيل المثال.tsql ضمن مقابلsql).

مشكلتي يظهر عندما حان الوقت لإنشاء قاعدة بيانات المخططات (بيئة الإنتاج).بقدر ما أستطيع أن أرى أنا قد بديلين.

  1. hbm2dll = تحديث
  2. نقية sql (ddl) مخطوطات.

البديل الأول هو نوقشت على نطاق واسع في الموضوع أعلاه.البديل الثاني هو سيء لأن ذلك يعني أنني عدت إلى بلدي المشكلة الأولى:"لا ترغب في إنشاء عبارات sql التي هي قاعدة بيانات الموردين تعتمد".(هذا البيان يمكن أن تكون كاذبة إذا كان "كل" (atlast قواعد البيانات السبات الدعم) يتم تنفيذ DDL (مجموعة فرعية من SQL المستخدمة في تحديد ودراسة بنية قاعدة البيانات.) على قدم المساواة).

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

المحلول

هل جميع التغييرات في التنمية/انطلاق الوضع ونقل تنفيذ البرامج النصية في الإنتاج يدويا (أو تلقائيا ، ولكن لا تدع السبات تشغيلها).البرامج النصية قد تحتاج بعض tunning منذ hbm2ddl التحديث لا يشمل جميع الحالات.

في الواقع أنا لم أترك السبات تشغيل ddl ضد أي قاعدة بيانات.يمكنني استخدام hbm2ddl توليد النص:

org.hibernate.tool.hbm2ddl.SchemaExport --config=hibernate.cfg.xml --text --format --delimiter=;

org.hibernate.tool.hbm2ddl.SchemaUpdate --config=hibernate.cfg.xml --text --format --delimiter=;

نصائح أخرى

عادة الأدوات التي مقالب JPA المخطط على أساس SchemaExport أداة, الذي يقرأ فقط ثابت الفوقية.

هناك مخضرم/Gradle المساعد https://github.com/Devskiller/jpa2ddl الذي يولد JPA المخطط.يتضمن جميع خصائص namings الاستراتيجيات أنواع المستخدم ، إلخ.

يمكنك أيضا استخدامه لتوليد الآلي مخطط الهجرة على الهجرة.

أنا مثل السبات (الكثير), و أعتقد أنه يجعل بعض جيدة بشكل لا يصدق رمز الجودة ، ولكن أود أن لا تكاد تتحول فضفاضة على بيانات الإنتاج مما كنت اسمحوا جدا مهذب دب ارع.كل شيء يمكن أن تذهب كبيرة لفترة من الوقت ، ولكن حادثة واحدة حيث يذهب سوء حقا سيئة.

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

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