Hibernate sessionfactory每次启动时删除我的数据库内容?

问题描述:

我使用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); 

所有实体bieng在启动时删除,因为你已经设置休眠配置以同样的方式,

实际财产就是hbm2ddl有这些值验证|更新|创建|创建 - 删除

您可能已将其设置为创建 - 删除,这意味着在启动时删除并创建新的模式,从而产生效果。

你可能想改变的值来验证,刚刚符合该架构是完整的

参考链接:如果您还需要进一步的细节http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html