如何在部署项目时加载.hbm文件

时间:2016-03-01 08:05:30

标签: hibernate

我正在使用带有Hibernate3.5的JSF2.1开发一个Web应用程序。正如我观察到的那样,在我发出第一个请求后,只有所有.hbm文件正在加载,但我想在部署项目时加载所有.hbm文件。 我怎样才能实现这一点,我的意思是我需要添加哪些配置,以便在部署时加载? 这是我的.cfg文件:

    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     <hibernate-configuration>
        <session-factory name="factory">
            <property name="connection.datasource">java:/PAEDIATRICS</property>
        </session-factory>
    </hibernate-configuration>
    public class HibernateUtil {
        private static final SessionFactory sessionFactory;

        static {
            try {
                // Create the SessionFactory from standard (hibernate.cfg.xml) 

                Configuration configuration = new Configuration();
                configuration.configure("hibernate/entitymapping/general/hibernate.cfg.xml");
                System.out.println("Hibernate Configuration loaded");

                sessionFactory = configuration.buildSessionFactory();

            } catch (Throwable ex) {
                // Log the exception. 
                System.err.println("Initial SessionFactory creation failed." + ex);
                ex.printStackTrace();
                throw new ExceptionInInitializerError(ex);
            }
        }

        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }
    }

1 个答案:

答案 0 :(得分:0)

SessionFactory仅在您第一次执行HibernateUtil.getSessionFactory()时创建,因为static初始化。

在服务器启动时进行配置的最简单方法是使用ServletContextListener

public class ApplicationInitializer implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {
        HibernateUtil.getSessionFactory();
    }

}

您需要将ApplicationInitializer添加到web.xml