أين تضع hibernate.cfg.xml؟




(8)

مشروعي هو كالتالي:

/src/main/java
     -thegamers
         -app.java
         -hibernateutil.java

يمكن أن يقول لي أحد أين يضع hibernate.cfg.xml؟

لأنني أتلقى هذا الخطأ:

Initial SessionFactory creation failed.org.hibernate.HibernateException: hibernate.cfg.xml not found
Exception in thread "main" java.lang.ExceptionInInitializerError
    at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
    at thegamers.HibernateUtil.<clinit>(HibernateUtil.java:8)
    at thegamers.App.main(App.java:15)
Caused by: org.hibernate.HibernateException: hibernate.cfg.xml not found
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2149)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2130)
    at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
    ... 2 more

أنا باستخدام مخضرم ، وأنها لا تعمل بالنسبة لي حتى أضع hibernate.cfg.xml في src/main/resources .


حاول وضعه في دليل " src/main/resources ".


في جذر المشروع الخاص بك: /src (في leat كافتراضي)

كيف تعرف ما إذا كان /src هو المصدر dir؟
عندما تقوم بإنشاء فئة Java جديدة ، فإنها تكون مضمنة في حزمة (تسمى عادةً بنفس اسم dir حيث يتم إنشائها). لذلك ، في تصريح صفك ، يمكنك رؤية شيء مثل هذا:

package foo;

class MyClass{

في إعدادات IDE الافتراضية ، يجب أن تجد الفئة تحت /src/foo/MyClass.java . كما ترون ، في هذا السيناريو /src يعمل كمصدر جذر dir.


إذا لم يكن مشروع ويب ثم فعل ذلك صراحة

new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()

آمل أن هذا قد يساعد

SiB أشار إلى وجود رابط (موقع mkyong على الويب). هو موضح جيدا هناك.


إذا كنت تستخدم Eclipse ، فانتقل إلى Project -> Properties -> Java Build Path -> Source. يمكنك إضافة المجلد الجديد الذي وضعت فيه الملف ، أو نقل الملف إلى المجلد الموجود.


CMD + N / CTR + N أثناء وجودك على Eclips ، فإنه سيتم فتح مربع حوار هناك لديك إلى dubbel انقر فوق مجلد Hibernate. سيتم فتح قائمة بالملفات مع XML التضمين. حدد cfg.xml وانقر على متابعة ومتى انتهيت! انقر على الانتهاء. سيقوم Eclips الآن بإضافة اسم الفئة مع ملف cfg.xml وإظهاره ضمن مجلد SRC. GB


إنه نفس الشيء بالنسبة لأي وقت آخر تحتاج فيه إلى ملف مرئي على مسار الصنف. يجب أن يكون ملف التهيئة hibernate.cfg.xml في مسار الفئة.

يمكن تحقيق ذلك بطرق مختلفة ، اعتمادًا على مشروعك.

  • لمشروع WAR على الويب (تقوم بتشغيل البرنامج في حاوية Servlet): سيعمل وضعه في WEB-INF/classes كملفات في WEB-INF/classes مرئية على classpath عند تشغيل التطبيق في الحاوية.

  • لمشروع Maven -style (لا يقوم بتشغيل البرنامج في حاوية Servlet): وضعه في /src/main/resources/ سيعمل

  • على خلاف ذلك ، حاول في src/ directory.


يفترض أن يدخل الملف إلى جذر /src dir /src ، بينما لا يتم نشر /src ، يتم إنشاء / نسخ كل شيء فيه إلى WEB-INF/classes التي يتم نشرها. يحتاج Hibernate إلى ملف cfg.xml في مسار classpath للمشروع الخاص بك لتحميل إعدادات التهيئة الخاصة به ، وليس WEB-INF dir في cfg.xml الخاص بك ، لذلك إذا كنت cfg.xml ، cfg.xml عن Hibernate وسيكون لا تعمل.

يخبرك thread هذا كيفية تحميل hibernate.cfg.xml من أي مسار مختلف.