كيفية إيقاف تشغيل HBM2DDL؟
سؤال
لم أتمكن من العثور على مرجع حول كيفية إيقاف تشغيل HBM2DDL.
المحلول
مجرد حذف hibernate.hbm2ddl.auto
الافتراضات إلى السبات لا تفعل أي شيء. من الوثائق المرجعية:
1.1.4. تكوين السبات
ال
hbm2ddl.auto
يقوم الخيار بتشغيل التوليد التلقائي من مخططات قاعدة البيانات مباشرة في قاعدة البيانات. يمكن أيضًا إيقاف تشغيل هذا عن طريق إزالة خيار التكوينأو إعادة توجيهها إلى ملف بمساعدة مهمة النمل المخطط.
ضبط hbm2ddl.auto
إلى none
(غير موثق) قد يولد تحذيرًا ، مثل: org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none
نصائح أخرى
يمكنك إيقاف تشغيله بواسطة:
hibernate.hbm2ddl.auto=none
انها غير موثقة ولكن لا تقدر بثمن!
لتوضيح هذا ، ينبغي للمرء أن ينظر إلى مصدر org.hibernate.cfg.SettingsFactory
(قد ترى شيئًا آخر اعتمادًا على الإصدار المستخدم):
String autoSchemaExport = properties.getProperty( AvailableSettings.HBM2DDL_AUTO );
if ( "validate".equals(autoSchemaExport) ) {
settings.setAutoValidateSchema( true );
}
else if ( "update".equals(autoSchemaExport) ) {
settings.setAutoUpdateSchema( true );
}
else if ( "create".equals(autoSchemaExport) ) {
settings.setAutoCreateSchema( true );
}
else if ( "create-drop".equals( autoSchemaExport ) ) {
settings.setAutoCreateSchema( true );
settings.setAutoDropSchema( true );
}
else if ( !StringHelper.isEmpty( autoSchemaExport ) ) {
LOG.warn( "Unrecognized value for \"hibernate.hbm2ddl.auto\": " + autoSchemaExport );
}
في ال org.hibernate.cfg.Settings
فئة تلك المتغيرات تتم تهيئة على النحو التالي:
private boolean autoCreateSchema;
private boolean autoDropSchema;
private boolean autoUpdateSchema;
private boolean autoValidateSchema;
لذلك هذه الافتراضي إلى خطأ.
حذف hibernate.hbm2ddl.auto
يجب أن يقوم الإعداد بإيقاف تشغيل HBM2DDL_AUTO
الوظيفة كما اقترح hibernate.hbm2ddl.auto = none
, ، ولكن في الحالة الأخيرة تحصل على تحذير في السجل.
في hibernate.properties
hibernate.hbm2ddl.auto=validate
بطبيعة الحال ، يعتمد المكان اللازم لتكوينه على الطريقة التي تقوم بتكوينها لإسباتك - إذا كان ذلك برمجيًا ، فقم بتعيين الخاصية هناك. إذا كان من hibernate.cfg.xml:
<property name="hibernate.hbm2ddl.auto">validate</property>
إذا أدخلت قيمة غير مدعومة ، فسيخبرك أي منها مدعوم:o.h.b.i.SessionFactoryBuilderImpl : Unrecognized hbm2ddl_auto value : bla. Supported values include 'create', 'create-drop', 'update', 'none' and 'validate'. Ignoring
والقيمة none
هو الافتراضي ، يتم دعمه رسميًا وتوثيقه:https://docs.jboss.org/hibernate/orm/current/userguide/html_single/hibernate_user_guide.html#configurations-hbmddl
هذه الخاصية غير مطلوبة. فقط حذف hibernate.hbm2ddl.auto
الدخول بالكامل من ملف XML.