Hibernate用hbm2ddl.auto = update保留一些表,用hbm2ddl.auto = create重新加载一些表

时间:2016-10-15 08:20:27

标签: java mysql hibernate hbm2ddl

:)

顾名思义我想问你是否在hibernate 5.2.2中,对某些表使用hbm2ddl.auto = update时可能会使用hbm2ddl.auto = create for others。或者我可以更好地在代码中定义现在我想创建新表以及其他时间我只想更新?

HibernateConnector的一个示例我希望它如何运行:

谢谢你,祝你有愉快的一天:)

1 个答案:

答案 0 :(得分:0)

好的,所以我完全按照我的问题解决了这个问题。我使用简单的布尔标志来决定HibernateConnector的两个独立配置

private HibernateConnector(boolean db) throws HibernateException {
if (db) {
    cfg = new Configuration();
    cfg.addAnnotatedClass(A.class);
    cfg.addAnnotatedClass(B.class);

    cfg.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
    cfg.setProperty("hibernate.connection.url", "jdbc:mysql:XXX");
    cfg.setProperty("hibernate.connection.username", "XXX");
    cfg.setProperty("hibernate.connection.password", "XYZ");
    cfg.setProperty("hibernate.show_sql", "true");
    cfg.setProperty("hibernate.hbm2ddl.auto", "create");
    sessionFactory = cfg.buildSessionFactory();
} else {
    cfg = new Configuration();
    cfg.addAnnotatedClass(A.class);
    cfg.addAnnotatedClass(B.class);
    cfg.addAnnotatedClass(C.class);
    cfg.addAnnotatedClass(D.class);

    cfg.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
    cfg.setProperty("hibernate.connection.url", "jdbc:mysql://XXX");
    cfg.setProperty("hibernate.connection.username", "XYZ");
    cfg.setProperty("hibernate.connection.password", "XXX");
    cfg.setProperty("hibernate.show_sql", "true");
    cfg.setProperty("hibernate.hbm2ddl.auto", "update");
    sessionFactory = cfg.buildSessionFactory();
}
}

我不完全确定这是最好的解决方案,但它确实有效。