Как программно добавить файл отображения Hibernate XML (hbm.xml)

Как программно добавить XML-файл отображения Hibernate (hbm.xml)

XML-файл отображения Hibernate содержит отношение отображения между классом Java и таблицей базы данных. Это всегда называется «xx.hbm.xml» и объявляется в файле конфигурации Hibernate «hibernate.cfg.xml».

Например, файл сопоставления (hbm.xml) объявлен в теге «mapping».





  false
  com.mysql.jdbc.Driver
  password
  jdbc:mysql://localhost:3306/example
  root
  org.hibernate.dialect.MySQLDialect
  true
  

Добавить файл сопоставления Hibernate (hbm.xml) программно

По каким-либо причинам вы не хотите включать файл сопоставления вhibernate.cfg.xml. Hibernate предоставляет метод для разработчика, чтобы добавить файл сопоставления программно.

Просто измените класс HibernateSessionFactory по умолчанию, передав путь к файлу «hbm.xml» в качестве аргумента в методaddResource():

SessionFactory sessionFactory = new Configuration()
   .addResource("com/example/common/Stock.hbm.xml")
   .buildSessionFactory();

HibernateUtil.java

Полный примерHibernateUtil.java, загрузить файл отображения XML Hibernate «xx.hbm.xml» программно.

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {

            SessionFactory sessionFactory = new Configuration()
                    .configure("/com/example/persistence/hibernate.cfg.xml")
                    .addResource("com/example/common/Stock.hbm.xml")
                    .buildSessionFactory();

            return sessionFactory;

        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }

}

Готово.