J'ai un projet Java EE Hibernate, et j'utilise MySQL comme base de données.
Je veux que lorsque je lance le projet pour la première fois, il crée automatiquement la base de données.
C'est mon 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>
Lors de la première exécution de ce projet sur un autre ordinateur, comment créer la base de données InternetProject
à créer?
Selon le fichier de configuration, il pourrait déjà le faire et je ne le sais pas.
Merci d'avance.
<property name="hibernate.hbm2ddl.auto">create</property>
créera des tables. Mais cela ne créera pas de base de données. Modifiez l'URL de connexion pour générer la base de données.<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>
Mise à jour: encodage de caractères lors de la création de la base de données
<property name="connection.url">
jdbc:mysql://localhost/InternetProject?createDatabaseIfNotExist=true&useUnicode=yes&characterEncoding=UTF-8
</property>
<property name="hibernate.hbm2ddl.auto">create</property>
ça ira
Il existe plusieurs options pour la propriété automatique.
valider - il valide ou fait correspondre le schéma avec une carte ou une annotation. Il est valable pour l'environnement de production.
<!-- create create-drop validate update -->
<property name="hbm2ddl.auto">update</property>
J'espère que ça aide.
Hibernate ne créera pas la base de données pour vous, seulement les tables. Pour créer la base de données, vous devez dire à MySQL de la créer si elle n'existe pas déjà en ajoutant un paramètre à l'URL. Par exemple.:
jdbc:mysql://db:3306/mydatabase?createDatabaseIfNotExist=true