Witam wszystkich serdecznie,
Chciałem napisać sobie najprostszą możliwą aplikację, która wykorzystuje Hibernate do zarządzania bazą danych MySQL. Docelowo ma być to aplikacja webowa, jednak na razie zrobiłem po prostu klasę z mainem, którą wywołuję jako Java Application do przetestowania samego działania Hibernate. W moim projekcie znajduje się wspomniana klasa (Welcome), POJO - User, plik hibernate.cfg.xml i plik o nazwie User.hbm.xml mapujący klasę User do tabeli User w bazie danych. Do zarządzania projektem używam Mavena.
Problem polega jednak na tym, że niezależnie od tego czy plik mapujący dodaję w pliku konfiguracyjnym Hibernate, czy dynamicznie po utworzeniu obiektu klasy Configuration, dostaję
MappingNotFoundException: resource: User.hbm.xml not found
.
Statycznie w hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- Assume test is the database name -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/hibernate
</property>
<property name="hibernate.connection.username">
root
</property>
<property name="hibernate.connection.password">
pass
</property>
<!-- List of XML mapping files -->
<mapping resource="User.hbm.xml" />
</session-factory>
</hibernate-configuration>
Dynamicznie w pliku Welcome.java:
try{
Configuration configuration = new Configuration();
configuration.configure("/persistence/hibernate.cfg.xml");
// configuration.addResource("/persistence/User.hbm.xml");
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
factory = configuration.buildSessionFactory(serviceRegistry);
}catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
Wydaje mi się to dziwne, bo plik konfiguracyjny Hibernate jest znajdowany bez problemu, a plik mapujący już nie. Oba znajdują się w tym samym katalogu persistence. Czytałem wiele wątków w Internecie i nie udało mi się znaleźć rozwiązania tego problemu. Zastanawiałem się czy nie jest to kwestią uprawnień (pracuję na Ubuntu), ale testowałem na Windowsie i jest to samo.
Co robię źle?