web-dev-qa-db-fra.com

Hibernate auto create database

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.

26
Billie

<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>
41
Aung Myat Hein
<property name="hibernate.hbm2ddl.auto">create</property>

ça ira

13
tesnik03

Il existe plusieurs options pour la propriété automatique.

  1. create - Il crée de nouvelles tables correspondant au mappage ou à l'annotation. Il supprime les tables et données existantes.
  2. mise à jour - Il conserve les données et les tableaux existants. Il met à jour le schéma. ici il faut faire attention aux contrants.
  3. create-drop - C'est la même chose que create mais une fois la session fermée, tout est supprimé.
  4. 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.

6
Jugal Panchal

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
6
simon