Похоже, что объект org.hibernate.cfg.Configuration можно использовать для программной проверки, вызывая метод validateSchema.
Однако этот метод нуждается в объектах dialect и databaseMetadata.
Я использую Spring, и я могу получить объект AnnotationSessionFactoryBean из контекста Spring. Пока у меня есть следующий код:
AnnotationSessionFactoryBean factory = null;
factory = (AnnotationSessionFactoryBean) context.getBean("AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
//the following line does not work, ConnectionHelper hierarchy is not visible outside the package
ConnectionHelper connectionHelper =
new ManagedConnectionProviderConnectionHelper(factory.getHibernateProperties());
Dialect dialect = Dialect.getDialect(factory.getHibernateProperties());
Connection connection = null;
DatabaseMetadata databaseMetadata = null;
try {
databaseMetadata = new DatabaseMetadata(connection, dialect);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
configuration.validateSchema(dialect, databaseMetadata);
Я на правильном пути? Иерархия ConnectionHelper не видна вне пакета, поэтому я не могу получить объект соединения таким образом, чтобы построить databaseMetadata. Как я могу это реализовать?
EDIT:
Я думаю, что добился определенного прогресса. Есть класс SchemaValidator. Код теперь выглядит так:
AnnotationSessionFactoryBean factory = context.getBean("&AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
SchemaValidator validator = new SchemaValidator(configuration);
validator.validate();
Howerver, теперь я получаю следующую ошибку:
org.hibernate.HibernateException: Локальный источник данных не найден для конфигурации - свойство LocalSessionFactoryBean должно быть установлено в