【问题标题】:Hibernate sessionfactory deleting my database contents everytime it starts up?Hibernate sessionfactory 每次启动时都会删除我的数据库内容?
【发布时间】:2012-05-03 07:06:01
【问题描述】:

我正在使用 Hibernate 将 Java 类保存到 derby 数据库。 当我运行我的代码时,我第一次运行我的类时一切都很好,我可以从我的数据库中创建并回调一个实例,即使我关闭了我的服务器 Tomcat,它仍然存在。

当我加载备份服务器时,我发现一旦我返回以下类,我的数据库表就会被擦除,该函数用于创建我用来创建会话的会话工厂,所以我没有多个工厂,它由一个ServletContextListener 以便在调用我的任何 Servlet 之前调用它,因此每次运行维护一个工厂。

有谁知道它为什么一直在擦我的数据库,不就是一个句柄吗

公共类 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);

【问题讨论】:

    标签: java hibernate servlets derby


    【解决方案1】:

    所有实体在启动时都会被删除,因为您已经以相同的方式设置了休眠配置,

    实际上属性 HBM2DDl 有这些值 validate |更新 |创建 |创建删除

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

    您可能希望更改要验证的值,这恰好符合架构完好无损

    如果您需要更多详细信息,请参阅链接http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 2014-02-07
      • 2017-11-11
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多