2009-05-18 9 views
2

私はHibernateを使い始めていますが、これまではそれほど難しくありません。しかし、私はhbm2ddl.autoプロパティについて混乱しています。これがデータベーステーブルを初期化するために何を手動で実行する方法はありますか?私はデータベースを変更した後で、プログラムを実行するたびにではなく、これを行うだけです。必要なHibernateデータベーステーブルの手動初期化

編集:実行時はどうですか? Javaプログラムでデータベーステーブルをプログラムで再初期化する方法はありますか? org.hibernate.tool.hbm2ddl.SchemaUpdateはおそらく右の獣のように見えますが、正確に何がわかりません。

答えて

2

を必要がある;オブジェクトモデルが変更された場合にのみ、HBM2DDLを実行してデータベースを生成してください。

1

Antタスクを休止状態に使用します。私は、その後、複製/バックアップは、データベースのスキーマを保存するために、データベースに存在するものを使用、データベースを生成するためにHBM2DDLを使用して、いつでもあなたのデータベースを再作成すること、スクリプトを使用するhttps://www.hibernate.org/381.html

0

このプロパティを設定すると、データベースの作成/更新スクリプトを生成して実行できます。これはプロトタイプ作成のための素晴らしいツールですが、しばらくしてから別のDB更新戦略に移行することをお勧めします。

0

すべての手がかりをいただきありがとうございます。以下は、働いていた:

public class HibernateUtil { 
... 

    public static SessionFactory createSessionFactory(Properties p) 
    { 
    try { 
     // Create the SessionFactory from hibernate.cfg.xml 
     Configuration cfg = new AnnotationConfiguration().configure(); 
     if (p != null) 
      cfg.addProperties(p); 
     return cfg.buildSessionFactory(); 
    } 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); 
    } 
    } 
} 

その後、私のアプリケーションのコードで:

private void init() { 
    Properties p = new Properties(); 
    p.setProperty("hibernate.hbm2ddl.auto", "create"); 
    Session session = HibernateUtil.createSessionFactory(p) 
     .getCurrentSession(); 
    session.beginTransaction(); 
    session.getTransaction().commit(); 
    session.getSessionFactory().close(); 
    System.out.println("should be initialized...."); 
} 
関連する問題