2012-01-12 16 views
17

? No deseo tener el archivo hibernate.cfg.xml. Por el contrario, quiero hacer toda la configuración a través de mi código como se muestra a continuación.¿Es obligatorio tener el archivo hibernate.cfg.xml para la configuración

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(); 
} 

He intentado el enfoque anterior. Pero estoy enfrentando el problema donde hibernate arroja una excepción diciendo "./hibernate.cfg.xml file missing".

¿Es realmente obligatorio guardar el archivo hibernate.cfg.xml?

Gracias de antemano

Respuesta

20

Creo que es por su llamada configure() en el objeto Configuration. Intente eliminar eso e hibernate no buscará el archivo inexistente. Básicamente está configurando todas las propiedades requeridas a través de su objeto properties, por lo que no es necesario decirle a Hibernate que busque un archivo hibernate.cfg.xml que es exactamente lo que hace el método configure().

10

No, no creo que el xml de configuración es obligatoria. Para solucionar su problema, creo que necesita utilizar la clase org.hibernate.cfg.Configuration. Echar un vistazo a este enlace: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

Básicamente, necesita cosas como

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"); 

Luego de crear su sessionFactory, que acaba de decir, cfg.buildSessionFactory();

6

No, no es obligatorio utilizar hibernate.cfg.xml. Simplemente no use .configure(). Hibernate buscará hibernate.cfg.xml si usamos .configure().

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

si desea registrar las consultas sql en la consola use: configuration.setProperty ("hibernate.show_sql", "true"); – Deepak

+0

Entonces, ¿cómo especificar la asignación? – digz6666

+2

De esta manera: configuration.addAnnotatedClass (org.gradle.Person.class); – Deepak

Cuestiones relacionadas