2012-05-03 3 views
1

Im Javaクラスをderbyデータベースに保存するためにHibernateを使用しています。 クラスを初めて実行するときにコードを実行すると問題はありません。データベースからインスタンスを作成してコールバックすることができます。サーバーTomcatをオフにしてもインスタンスは保持されます。Hibernate sessionfactory起動するたびにデータベースコンテンツを削除しますか?

サーバをロードすると、セッションを作成するために使用するセッションファクトリを作成する次のクラスを返すと、データベーステーブルが消去されることがわかりました。複数のファクトリを持っていません。私のサーブレットの前に呼び出されるServletContextListenerが呼び出され、実行ごとに1つのFactoryが保持されます。

それは私のデータベースを拭く続け、なぜ誰もがそれだけではなく、ハンドル

パブリッククラスCreateMysessionfactory { 民間のSessionFactoryの工場で、知っています。

public CreateMysessionfactory() { 

    AnnotationConfiguration config = new AnnotationConfiguration(); 

    config.addAnnotatedClass(UPS.class); 

    config.configure(); 

    factory = config.buildSessionFactory(); 

} 

public SessionFactory getFactory() { 
    return factory; 
} 

以下は、上記のメソッドを呼び出すServletContextListenerです。役立つかもしれません。

public void contextInitialized(ServletContextEvent event) { 
    // Create the database connection. 
    ServletContext ctx = event.getServletContext(); 

    // Create the database:grab my hibernate object here 
    CreateMysessionfactory db = new CreateMysessionfactory(); 
    ctx.setAttribute("db", db); 

    ctx.setAttribute("DbSessionFactory", db.getFactory()); 

    ItemDataAccessObject dao = new ItemDataAccessObject(db.getFactory()); 
    Item u = new Item(); 
    //Item u =dao.getItem(0); 
    dao.updateItem(u); 

答えて

3

あなたが同じようにconfigの休止状態を設定しているので、すべてのエンティティは、起動時に実際に

HBM2DDlは、これらの値は検証しているプロパティを削除biengています|更新|作成する| create-drop

起動時に新しく作成されたスキーマを意味し、削除して作成するためのcreate-dropとして設定している可能性があります。

あなただけのスキーマを使用すると、さらに詳細が必要な場合

は、リンクを参照してください無傷であることを準拠しており、検証する値を変更するようなことがありhttp://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

関連する問題