Подтвердить что ты не робот

Обязательно иметь файл 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 выбрасывает исключение, говоря "./hibernate.cfg.xml file missing".

Обязательно ли хранить файл hibernate.cfg.xml?

Заранее спасибо

4b9b3361

Ответ 1

Я считаю, что это из-за вашего вызова configure() объекта Configuration. Попробуйте удалить это, и спящий режим не будет искать несуществующий файл. В основном вы устанавливаете все необходимые свойства через ваш объект properties, поэтому нет реальной необходимости сообщать Hibernate о поиске файла hibernate.cfg.xml, что и делает метод configure().

Ответ 2

Нет, я не думаю, что config xml является обязательным. Чтобы исправить вашу проблему, я думаю, вам нужно использовать класс org.hibernate.cfg.Configuration. Посмотрите на эту ссылку: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

В принципе, вам нужны такие вещи, как

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

Затем, чтобы создать sessionFactory, вы просто скажете: cfg.buildSessionFactory();

Ответ 3

Нет, это не обязательно для использования hibernate.cfg.xml. Просто не используйте .configure(). Hibernate будет искать hibernate.cfg.xml, если мы используем .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;
    }
}