2012-01-12 8 views
17

Nie chcę mieć pliku hibernate.cfg.xml. Raczej chcę wykonać całą konfigurację za pomocą mojego kodu, jak pokazano poniżej.Czy jest wymagane posiadanie pliku hibernate.cfg.xml do konfiguracji

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

Próbowałem powyższego podejścia. Ale mam do czynienia z problemem, w którym hibernacja rzuca wyjątek z napisem "./hibernate.cfg.xml file missing".

Czy przechowywanie pliku hibernate.cfg.xml jest naprawdę obowiązkowe?

Z góry dzięki

Odpowiedz

20

Uważam, że jest to spowodowane Twoim configure() wywołaniem obiektu configure() na obiekcie Configuration. Spróbuj usunąć i hibernacja nie będzie szukała nieistniejącego pliku. Zasadniczo ustawiasz wszystkie wymagane właściwości za pomocą twojego obiektu properties, więc nie ma prawdziwej potrzeby, aby powiedzieć Hibernate, aby szukał pliku hibernate.cfg.xml, który jest dokładnie tym, co robi metoda configure().

10

Nie, nie sądzę, że config xml jest obowiązkowy. Aby rozwiązać problem, myślę, że musisz użyć klasy org.hibernate.cfg.Configuration. Spojrzeć na ten link: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

Zasadniczo trzeba takie rzeczy jak

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

Następnie, aby utworzyć SessionFactory, po prostu powiedzieć, cfg.buildSessionFactory();

6

Nie, używanie programu hibernate.cfg.xml nie jest obowiązkowe. Po prostu nie używaj .configure(). Hibernate będzie szukał hibernate.cfg.xml, jeśli użyjemy .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

jeśli chcesz logować zapytania sql na konsoli: use.setProperty ("hibernate.show_sql", "true"); – Deepak

+0

Następnie, jak określić mapowanie? – digz6666

+2

W ten sposób: configuration.addAnnotatedClass (org.gradle.Person.class); – Deepak

Powiązane problemy