В моем весеннем проекте я использую Hibernate для экспорта классов сущностей в ранее созданную базу данных. Но для этого потребуется, чтобы конечный пользователь знал, как создать базу данных в системе диспетчера баз данных (в настоящее время я использую Postgresql).

Есть ли способ, учитывая только компьютер, на котором установлен postgresql (а также имя пользователя и пароль, которые предоставляются при первом запуске приложения), Hibernate создает новую базу данных на сервере, если она не существует ?

0
Kleber Mota 6 Май 2014 в 17:24

3 ответа

Лучший ответ

Если ваша конфигурация выглядит так

<hibernate-configuration>

  <session-factory>

    <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="connection.driver_class">org.postgresql.Driver</property>
    <property name="connection.url">jdbc:postgresql://host:port/database</property>
    <property name="connection.username">username</property>
    <property name="connection.password">password</property>


    <property name="current_session_context_class">thread</property>
    <property name="hibernate.show_sql">false</property>
<property name="hbm2ddl.auto">update</property>
  </session-factory>
</hibernate-configuration>

Тогда база данных будет создана Hibernate автоматически.

Обновление:

Хорошо, теперь я понимаю, чего вы хотите. Вы хотите запустить сервер Postgresql с Hibernate. Это невозможно. Hibernate этого не делает.

Вы можете сделать это с помощью

  1. Другой сценарий, который запускается с вашим приложением
  2. Цель maven / ant.
  3. Строительная работа

Но лучшее решение - использовать базу данных в памяти, которой не нужен внешний сервер (например, H2 или Java derby).

Смотрите также Моделировать СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ для PostgreSQL?

А также

База данных Postgres создать, если не существует

2
Community 23 Май 2017 в 10:29

Взгляните на параметр hibernate.hbm2ddl.auto для вашего файла hibernate.cfg.xml. Предлагаю вам эту ссылку: Hibernate hbm2ddl .auto, возможные значения и что они делают - какие-либо официальные объяснения?

0
Community 23 Май 2017 в 12:02

Запустите «СОЗДАТЬ БАЗУ ДАННЫХ ...» (см. http: //www.postgresql .org / docs / 9.0 / static / sql-createdatabase.html) как собственный SQL-запрос ...

.createSQLQuery ("...") .executeUpdate (); ...

Hibernate - по крайней мере, насколько мне известно - создает не базу данных, а только таблицы в ней.

Я предполагаю, что вам нужно подключиться к postgresql через вторую единицу сохранения состояния / соединение из-за того, что этот подход основан на курице и яйце.

0
jon martin solaas 6 Май 2014 в 17:00