validateSchema 메소드를 호출하여 org.hibernate.cfg.Configuration 객체를 사용하여 프로그래밍 방식으로 유효성 검사를 수행하는 것으로 보입니다. 그러나이 메소드에는 dialect 및 databaseMetadata 객체가 필요합니다. Spring을 사용하고 있으며 Spring 컨텍스트에서 AnnotationSessionFactoryBean 객체를 가져올 수 있습니다. 지금까지 다음 코드를 가지고 있습니다 :주석을 사용하여 최대 절전 모드에서 프로그래밍 방식으로 데이터베이스 스키마의 유효성을 검사하는 방법은 무엇입니까?
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을 구성하기 위해 연결 객체를 이와 같이 얻을 수 없습니다. 어떻게 구현할 수 있습니까?
편집 : 나는 약간의 진전을 이뤘다고 생각한다. SchemaValidator 클래스가 있습니다. 코드는 이제 다음과 같습니다
이AnnotationSessionFactoryBean factory = context.getBean("&AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
SchemaValidator validator = new SchemaValidator(configuration);
validator.validate();
Howerver을, 지금은 다음과 같은 오류가 무엇입니까 :
org.hibernate.HibernateException : 구성 찾을 수 없습니다 로컬 데이터 소스를 - '는 dataSource'속성이 LocalSessionFactoryBean의 설정해야합니다