ऐसा लगता है कि org.hibernate.cfg.Configuration ऑब्जेक्ट को वैधता स्कैमा विधि को कॉल करके प्रोग्रामेटिक रूप से सत्यापन करने के लिए उपयोग किया जा सकता है। हालांकि, इस विधि को बोली और डेटाबेस मेटाडेटा ऑब्जेक्ट्स की आवश्यकता है। मैं वसंत का उपयोग कर रहा हूं और मैं वसंत संदर्भ से एनोटेशन सत्र FactoryBean वस्तु पकड़ सकता है। अब तक मेरे पास निम्न कोड है:एनोटेशन के साथ हाइबरनेट में डेटाबेस स्कीमा को प्रोग्रामेटिक रूप से कैसे सत्यापित करें?
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);
क्या मैं सही रास्ते पर हूं? कनेक्शन हेल्पर पदानुक्रम पैकेज से बाहर दिखाई नहीं दे रहा है, इसलिए मैं डेटाबेस मेटाडेटा बनाने के लिए कनेक्शन ऑब्जेक्ट को इस तरह से प्राप्त नहीं कर सकता। मैं इसे कैसे कार्यान्वित कर सकता हूं?
संपादित करें: मुझे लगता है कि मैंने कुछ प्रगति की है। एक स्कीमाविलिएटर वर्ग है। कोड अब इस तरह दिखता है:
AnnotationSessionFactoryBean factory = context.getBean("&AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
SchemaValidator validator = new SchemaValidator(configuration);
validator.validate();
Howerver, अब मैं निम्न त्रुटि हो रही है:
org.hibernate.HibernateException: नहीं स्थानीय डेटा स्रोत विन्यास के लिए मिला - 'डेटा स्रोत' संपत्ति LocalSessionFactoryBean पर सेट किया जाना चाहिए