هل هناك سير عمل بسيط لإنشاء مخطط قاعدة بيانات من فصول مع تعيينات السبات؟

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

  •  01-10-2019
  •  | 
  •  

سؤال

أحب المعرف لتحديد كائناتي ثم استخدم السبات لإنشاء DDL الخاص بي من هذا. ولكن يبدو أن سير العمل الحقيقي الوحيد مع السبات هو إنشاء مخطط DATBASE ثم عكس هندسةه. هل أريد أن أفعل شيئًا لا معنى له؟

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

المحلول

نعم هناك خاصية hibernate.hbm2ddl.auto. ال توثيق يقول:

يتحقق أو تصدير مخطط DDL أو تصديره تلقائيًا عند إنشاء SessionFactory. باستخدام Create-Drop ، سيتم إسقاط مخطط قاعدة البيانات عند إغلاق SessionFactory بشكل صريح.

على سبيل المثال التحقق من صحة | تحديث | إنشاء | إنشاء drop

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

<property name="hibernate.hbm2ddl.auto">update</property>

نصائح أخرى

ولكن يبدو أن سير العمل الحقيقي الوحيد مع السبات هو إنشاء مخطط قاعدة البيانات ثم عكس هندسةه.

لا لا على الاطلاق. تاريخيا ، يدعم السبات عدة طرق:

  • من أعلى إلى أسفل: تبدأ بنموذج الكائن ، ثم قم بإنشاء رسم خرائط metatdata إما مع ملفات XML أو التعليقات التوضيحية ثم إنشاء المخطط باستخدام Hibernate's hbm2ddl أداة.

  • تصاعدي: تبدأ بقاعدة بيانات موجودة وإنشاء مجموعات التعيينات وفئات Java (أو فقط فئات Java المعروفة) من مخطط قاعدة البيانات باستخدام hbm2hbmxml و hbm2java .

  • الوسط: تبدأ في كتابة تعيينات Hibernate XML وإنشاء فصول DDL و Java باستخدام hbm2ddl و hbm2java على التوالى.

  • الالتقاء في منتصف الطريق: لديك نموذج Java موجود وقاعدة بيانات موجودة. لا يمكن أن تساعد Tooling Hibernate كثيرًا هنا ، فمن المحتمل أن تضطر إلى كتابة التعيينات باليد والقيام ببعض إعادة إعادة تصميم قاعدة البيانات ، أو رمز Java ، أو استخدام نوع من الجسر. هذا هو أسوأ موقف.

لذلك ، كما رأينا ، يدعم السبات العديد من مهام سير العمل ويوفر الأدوات لهم. وفي حالتك ، أنت تبحث عن الأداة المسمى hbm2ddl (المعروف أيضا باسم SchemaExport, ، وهو اسم الفصل الذي ينفذه). هناك عدة طرق لاستخدامها:

  • يمكنك الجري SchemaExport برمجيا.
  • يمكنك تمكين التصدير التلقائي للمخطط في SessionFactory وقت الخلق عن طريق تعيين العقار hibernate.hbm2ddl.auto لقيمة مناسبة
  • يمكنك استخدام ال <hbm2ddl> مهمة النمل

مراجع

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