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);