2012-05-03 21 views
1

我使用Hibernate將Java類保存到德比數據庫。 當我運行我的代碼時,第一次運行我的類時,一切都很好,我可以創建並從我的數據庫回調實例,即使在關閉我的服務器Tomcat時它仍然存在。Hibernate sessionfactory每次啓動時刪除我的數據庫內容?

當我加載備份我的服務器時,我發現一旦我返回以下類,我的數據庫表會被擦除,該函數將創建一個sessionfactory,用於創建會話,所以我沒有多個工廠,一個ServletContextListener,以便在我的任何一個servevlet被調用之前調用它,因此每次運行維護一個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

所有實體bieng在啓動時刪除,因爲你已經設置休眠配置以同樣的方式,

實際財產就是hbm2ddl有這些值驗證|更新|創建|創建 - 刪除

您可能已將其設置爲創建 - 刪除,這意味着在啓動時刪除並創建新的模式,從而產生效果。

你可能想改變的值來驗證,剛剛符合該架構是完整的

參考鏈接:如果您還需要進一步的細節http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

相關問題