必要なHibernateのデータベーステーブルを手動で初期化
-
22-08-2019 - |
質問
私は、Hibernateで始めることだし、これまでのところ、それはあまりにも難しいことではありません。しかし、私はhbm2ddl.autoプロパティについて混乱しています。手動で、これはデータベーステーブルを初期化するために行い何でも実行する方法はありますか?私は、私は私のデータベースの変更ではなく、私は私のプログラムを実行するたびに作成した後、これをやりたい。
の編集の実行時に何でしょうか?プログラムでデータベーステーブルを再初期化するために私のJavaプログラムで方法はありますか? org.hibernate.tool.hbm2ddl.SchemaUpdate >多分右獣のように見えますが、私はそれが正確に何をするかわからない。
解決
私はその後、複製/バックアップは、データベースのスキーマを保存するために、データベースに存在するものを使用、データベースを生成するためにHBM2DDLを使用して、あなたがする必要があるたびに、データベースを再作成すること、スクリプトを使用します。場合にのみ、あなたのオブジェクトモデルの変更データベースを生成するHBM2DDLを実行します。
他のヒント
休止状態のAntタスクを使用してください: https://www.hibernate.org/381.html
このプロパティを設定すると、データベース用に作成/更新スクリプトを生成し、それらを実行することができます。これは、プロトタイピングのための素晴らしいツールですが、いくつかの時間後に私は別のDB更新戦略に移動することをお勧めします。
[OK]を、すべての手がかりに感謝!以下は、働いていた。
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....");
}
所属していません StackOverflow