web-dev-qa-db-ja.com

Hibernate自動データベース作成

Java EE Hibernateプロジェクトがあり、データベースとして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を作成するにはどうすればよいですか?

構成ファイルによると、既にそれを行っている可能性があり、私はそれに気づいていません。

前もって感謝します。

26
Billie

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

更新:データベース作成時の文字エンコード

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

しましょう

13
tesnik03

自動プロパティには複数のオプションがあります。

  1. create-マッピングまたは注釈に対応する新しいテーブルを作成します。既存のテーブルとデータを削除します。
  2. 更新-既存のデータとテーブルを保持します。スキーマを更新します。ここで私たちは反対者に注意しなければなりません。
  3. create-drop-createと同じですが、セッションが終了するとすべてがドロップされます。
  4. validate-スキーマを検証またはマップまたは注釈と照合します。実稼働環境で有効です。

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

役に立てば幸いです。

6
Jugal Panchal

Hibernateはデータベースを作成せず、テーブルのみを作成します。データベースを作成するには、URLにパラメーターを追加して、データベースが存在しない場合は作成するようにMySQLに指示する必要があります。例えば。:

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