Значение hibernate.hbm2ddl.auto для выполнения обеих операций, т.е. создания / обновления схемы базы данных? - PullRequest
2 голосов
/ 16 января 2012

я хочу знать пока, возможно ли в спящем режиме создать схему базы данных, если схема не существует, иначе обновите схему если он уже существует и есть некоторые изменения в файле hbm с некоторым значением свойства hibernate.hbm2ddl.auto.

Согласно моему пониманию создать значение всегда удалит предыдущую схему и создаст новую схему? update value не создаст новую схему, он просто обновит схему, если она существует на основе hbm.xml. правый

Шахтная схема является локальной схемой, а не производственной схемой.

Ответы [ 2 ]

1 голос
/ 16 января 2012

Значение update для hibernate.hbm2ddl.auto действительно создаст новую схему, если она не существует.

0 голосов
/ 17 января 2012

Вам не нужно использовать SchemaExport, вы можете просто использовать SchemaUpdate. Он отлично работает, и вы можете просмотреть sql, прежде чем принять решение, если хотите.

Вам нужно создать базу данных самостоятельно или использовать для этого какой-нибудь jdbc. А потом:

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;

public static void updateDb(Configuration cfg, boolean printSqlToConsole, boolean commit)
{
    SchemaUpdate u = new SchemaUpdate(cfg);
    u.setFormat(printSqlToConsole);
    u.execute(printSqlToConsole, commit);
}

Примечание: , что он не может обрабатывать переименованные / измененные поля, вы должны позаботиться об этом. Но он может обрабатывать новые поля. Поля, которые не отображаются, игнорируются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...