2012-01-12 20 views
17

के लिए hibernate.cfg.xml फ़ाइल होना अनिवार्य है, मैं hibernate.cfg.xml फ़ाइल नहीं चाहता हूं। इसके बजाय मैं नीचे दिखाए गए अनुसार मेरे कोड के माध्यम से सभी विन्यास करना चाहता हूं।कॉन्फ़िगरेशन

private static final SessionFactory factory; 
private static final Properties properties; 

static 
{ 
    properties = new Properties(); 
    properties.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver"); 
    properties.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/books"); 
    properties.setProperty("hibernate.connection.username", "jhtp7"); 
    properties.setProperty("hibernate.connection.password", "password"); 
    properties.setProperty("hibernate.show_sql", "com.mysql.jdbc.Driver"); 
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); 

    factory = new Configuration().setProperties(properties).configure(). 
          buildSessionFactory(); 
} 

मैंने उपरोक्त दृष्टिकोण की कोशिश की है। लेकिन मुझे उस समस्या का सामना करना पड़ रहा है जहां हाइबरनेट ने अपवाद फेंक दिया है "./hibernate.cfg.xml file missing"।

क्या hibernate.cfg.xml फ़ाइल रखना वाकई अनिवार्य है?

अग्रिम धन्यवाद

उत्तर

20

मेरा मानना ​​है कि यह आपके configure()Configuration ऑब्जेक्ट पर कॉल करने के कारण है। इसे हटाने का प्रयास करें और हाइबरनेट गैर-मौजूद फ़ाइल की तलाश नहीं करेगा। असल में आप अपने properties ऑब्जेक्ट के माध्यम से सभी आवश्यक गुणों को सेट कर रहे हैं, इसलिए hibernate.cfg.xml फ़ाइल देखने के लिए हाइबरनेट को बताने की कोई वास्तविक आवश्यकता नहीं है जो कि configure() विधि है।

10

नहीं है, मुझे नहीं लगता कि config एक्सएमएल अनिवार्य है। अपनी समस्या को ठीक करने के लिए, मुझे लगता है कि आपको org.hibernate.cfg.Configuration क्लास का उपयोग करने की आवश्यकता है। इस लिंक पर एक नज़र डालें: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

मूल रूप से, आप अपने sessionFactory बनाने के लिए

Configuration cfg = new Configuration() 
.setProperty("hibernate.dialect", "com.mysql.jdbc.Driver") 
.setProperty("hibernate.connection.datasource", "jdbc:mysql://localhost:3306/books") 
.setProperty("hibernate.order_updates", "true"); 

तब जैसी चीजों की जरूरत है, तो आप सिर्फ कहते हैं, cfg.buildSessionFactory();

6

नहीं, hibernate.cfg.xml का उपयोग करना अनिवार्य नहीं है। बस .configure() का उपयोग न करें। अगर हम .configure() का उपयोग करते हैं तो हाइबरनेट hibernate.cfg.xml की तलाश करेगा।

public class HibernateUtil { 
    private static SessionFactory sessionFactory ; 
    static { 
     Configuration configuration = new Configuration(); 

     configuration.addAnnotatedClass (org.gradle.Person.class); 
     configuration.setProperty("hibernate.connection.driver_class","com.mysql.jdbc.Driver"); 
     configuration.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/hibernate");         
     configuration.setProperty("hibernate.connection.username", "root");  
     configuration.setProperty("hibernate.connection.password", "root"); 
     configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); 
     configuration.setProperty("hibernate.hbm2ddl.auto", "update"); 
     configuration.setProperty("hibernate.show_sql", "true"); 
     configuration.setProperty(" hibernate.connection.pool_size", "10"); 

     StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 
     sessionFactory = configuration.buildSessionFactory(builder.build()); 
    } 
    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 
} 
+0

यदि आप कंसोल उपयोग पर एसक्यूएल प्रश्नों को लॉग करना चाहते हैं: config.setProperty ("hibernate.show_sql", "true"); – Deepak

+0

फिर मैपिंग कैसे निर्दिष्ट करें? – digz6666

+2

इस तरह से: config.addAnnotatedClass (org.gradle.Person.class); – Deepak

संबंधित मुद्दे