Автоматическая создание базы данных 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>
Надеюсь, это поможет.