1

プログラムで休止状態のセッション ファクトリを構成しています。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html#configuration-programmatic

private static SessionFactory buildSessionFactory() {

        // Create the SessionFactory from hibernate.cfg.xml
        Configuration configuration = new Configuration();
        configuration.configure();

        configuration.setProperty("hibernate.connection.url", myUrl);
        configuration.setProperty("hibernate.connection.username", myUser);
        configuration.setProperty("hibernate.connection.password", myPass);

        serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); 

        return configuration.buildSessionFactory(serviceRegistry);
}

しかし、問題は、dao から休止状態操作を使用する場合にのみ、これらのプロパティが読み込まれることです。

protected void startOperation() {
    session = HibernateUtil.getSessionFactory().openSession();
    tx = session.beginTransaction();
}

したがって、アプリケーションが起動すると、hibernate.hbm2ddl.auto が機能しないようです。プログラムまたはその他のソリューションで hibernate.hbm2ddl.auto を強制的に開始することはできますか?

提案やその他のオプション、考えはありますか?

4

2 に答える 2

4

hibernate.hbm2ddl.auto を設定するか、使用する必要があります

configuration.setProperty("hibernate.hbm2ddl.auto", "create-drop");

hibernate.propertieshibernate.cfg.xmlなどの構成ファイルを使用することは、設定を行うためのより好ましい方法です。

于 2012-09-28T08:11:31.667 に答える
0

はい。new Configuration()からすべてのプロパティをロードする必要がありますhibernate.cfg.xml

が呼び出さSessionFactoryれたときにのみビルドされる遅延初期化されるように構成されている よう です。HibernateUtil.getSessionFactory()

コンソール プログラムの場合は SessionFactory.buildSessionFactory()、メイン メソッドで単純に呼び出す

Web アプリケーションの場合は、ServletContextListener.contextInitialized(ServletContextEvent sce)または Spring を使用SessionFactory.buildSessionFactory()して、サーバーの起動時に を強制的に実行できます。

于 2012-09-28T09:04:30.287 に答える