هل هناك سير عمل بسيط لإنشاء مخطط قاعدة بيانات من فصول مع تعيينات السبات؟
سؤال
أحب المعرف لتحديد كائناتي ثم استخدم السبات لإنشاء 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>
مهمة النمل
مراجع
- دليل مرجعي أساسي
- دليل مرجع أدوات السبات