Я "займаюсь курсами зі сну зими та основ СВ, і я не можу знайти форуми для обговорення чи щось подібне як частину курсу, тому тут запитую.
Інструктор змусив мене створити файл hibernate.cfg.xml і сказав мені змінити клас hibernateUtil.java. Ось як виглядає зараз клас
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try{
Configuration configuration = new Configuration();
return
configuration.buildSessionFactory
(new StandardServiceRegistryBuilder().
applySettings(configuration.getProperties()).
build());
}
catch (Exception e){
e.printStackTrace();
throw new RuntimeException("Service factory creation failed");
}
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
}
Я не можу зрозуміти, де тут використовується hibernate.cfg.xml. Для перевірки цього використовується простий клас додатків Заявка на публічний клас {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.close();
}
}
Насправді я навіть видалив hibernate.cfg.xml з джерела / main / властивості та повторно запустив це (Ctrl-F11 у затемненні), і я не бачив жодних проблем, тобто жодних помилок у консолі.
Отже, які зміни потрібно внести до класу HibernateUtil, щоб використовувати hibernate.cfg.xml?
Дякую.
Відповіді:
1 для відповіді № 1Є якийсь спосіб використання hibernate.cfg.xml
. Це трохи залежить від сплячої версії.
Ти маєш
Configuration configuration = new Configuration();
Якщо ти зробиш
configuration.configure();
Зимує читати hibernate.cfg.xml
Щоб побудувати фабрику сесій, цього досить:
return new Configuration().configure().buildSessionFactory();
Ви можете, звичайно, зробити щось подібне:
Configuration configuration = new Configuration();
configuration.configure();
return configuration.buildSessionFactory
(new StandardServiceRegistryBuilder().
applySettings(configuration.getProperties()).
build());
Вам це потрібно applySettings(configuration.getProperties())
, лише якщо у вас є властивості в hibernate.cfg.xml
. Але цей код буде працювати тільки з Hibernate 4. Hibernate 5 втратить класи картографування, які він отримає configuration.configure()
.
hibernate.cfg.xml
має бути в корені src
папку або, якщо ви використовуєте Maven build, в resources
папка (не properties
). У будь-якому випадку після відновлення (оновлення) він буде знаходитися в корені папки збірки (bin
, build
)