我使用Hibernate将Java类保存到derby数据库。 当我运行我的代码时,第一次运行我的类时一切都很好,我可以创建并从我的数据库中回调一个实例,即使我关闭服务器Tomcat,它仍然存在。
当我加载我的服务器时,我发现我的数据库表在我返回以下类后被擦除了,该函数是创建一个我用来创建会话的sessionfactory,所以我没有多个工厂,它被一个叫做ServletContextListener,以便在调用任何servevlet之前调用它,因此每次运行一个Factory。
有谁知道为什么它一直在擦拭我的数据库,它不只是一个句柄
public class 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);
答案 0 :(得分:3)
所有实体都在启动时被删除,因为你已经以相同的方式设置了hibernate配置,
实际上属性HBM2DDl具有这些值validate |更新|创建|创建降
您可能已将其设置为create-drop,这意味着,在启动时删除并创建新架构,从而产生效果。
您可能希望更改要验证的值,这只是符合架构的完整
如果您需要更多详细信息,请参阅链接http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html