Автоматическая создание базы данных Hibernate

У меня есть проект hibernate JavaEE,

И я использую MySQL как базу данных.

Я хочу, чтобы при первом запуске проекта он автоматически создавал базу данных.

Это мой hibernate.cnf.xml:

<?xml version='1.0' encoding='utf-8' ?>

<!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >

<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/InternetProject</property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <property name="connection.pool_size">10</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="show_sql">true</property>
        <mapping class="entities.Business" />
        <mapping class="entities.Coupon" />
        <mapping class="entities.User" />
        <mapping class="entities.LastLogin" />
    </session-factory>  
</hibernate-configuration>

Когда я впервые запускаю этот проект на другом компьютере, как я могу создать базу данных InternetProject?

В соответствии с конфигурационным файлом он уже может это сделать, и я не знаю об этом. Заранее спасибо:)

Ответ 1

<property name="hibernate.hbm2ddl.auto">create</property>    создадут таблицы. Но он не будет создавать базу данных. Измените URL-адрес соединения для создания базы данных.

    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost/InternetProject?createDatabaseIfNotExist=true</property>
    <property name="connection.username">root</property>
    <property name="connection.password"></property>
    <property name="connection.pool_size">10</property>

Ответ 2

<property name="hibernate.hbm2ddl.auto">create</property>

сделает

Ответ 3

Hibernate не будет создавать базу данных для вас, а только таблицы. Чтобы создать базу данных, вам нужно сообщить MySQL, чтобы она была создана, если она еще не существует, добавив параметр в URL. Например:.

jdbc:mysql://db:3306/mydatabase?createDatabaseIfNotExist=true

Ответ 4

Существует несколько вариантов автоматического свойства.

  • create - создает новые таблицы, соответствующие сопоставлению или аннотации. Он снижает существующие таблицы и данные.
  • update - Сохраняет существующие данные и таблицы. Он обновляет схему. здесь мы должны заботиться о контрагентах.
  • create-drop - это то же самое, что и create, но как только сеанс закрывается, он все бросает.
  • validate - проверяет или сопоставляет схему с картой или аннотацией. Он действителен для производственной среды.

    <!-- create create-drop validate update -->
    <property name="hbm2ddl.auto">update</property>
    

Надеюсь, это поможет.