Конфигурация гибернации во время выполнения - PullRequest
16 голосов
/ 27 августа 2009

У меня есть файл hibernate.cfg.xml.

<session-factory>

    <!-- Database connection settings -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url"></property>
    <property name="connection.username"></property>
    <property name="connection.password"></property> 

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>

.....................

Это самая интересная часть файла. Теперь я должен установить пропущенные значения: URL, имя пользователя, пароль. Я пытаюсь сделать так:

public static void SetSessionFactory() {
    try {

      AnnotationConfiguration conf = new AnnotationConfiguration().configure();
      // <!-- Database connection settings -->
      conf.setProperty("connection.url", URL);
      conf.setProperty("connection.username", USERNAME);
      conf.setProperty("connection.password", PASSWORD);
      SESSION_FACTORY = conf.buildSessionFactory();

    } catch (Throwable ex) {
      // Log exception!
      throw new ExceptionInInitializerError(ex);
    }
  }

Но он просто загружает мою конфигурацию из hibernate.cfg.xm и не изменяет никаких свойств ...

url, username, passoword - это аргументы командной строки, поэтому я должен установить их во время выполнения.

Ответы [ 3 ]

23 голосов
/ 27 августа 2009

Попробуйте позвонить conf.configure(); здесь.
А для свойств может потребоваться префикс hibernate, например «hibernate.connection.username»
Надеюсь, это поможет.

4 голосов
/ 09 сентября 2014

Попробуй вот так все нормально работает

AnnotationConfiguration conf = new AnnotationConfiguration().configure("/dronehibernate.cfg.xml");

conf.setProperty("hibernate.connection.url","jdbc:mysql://localhost/PAT_DRONE_DB1");

SessionFactory sessionFactory = conf.buildSessionFactory();

Session session = sessionFactory.openSession();

List<NetworkType> channelList = session.createQuery("from NetworkType").list();
0 голосов
/ 28 августа 2009

Используйте константы из Environment класса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...