2014-01-12 165 views
12

我有一個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產生的呢?

根據配置文件,它可能已經做到這一點,我不知道它.. 在此先感謝,:)

回答

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

會做

+1

謝謝!這是什麼時候和' update''之間的區別? – Billie

+2

創建將創建一個新的架構和更新將查找架構並執行更新 – tesnik03

+1

我可以使用'create'而不是'udpate',或者我應該同時使用? – Billie

5

有多個選項汽車財產。

  1. create - 它創建新的表格相應的映射或註釋。它會刪除現有的表和數據。
  2. 更新 - 它保留現有的數據和表格。它更新架構。這裏我們必須小心謹慎。
  3. 創建 - 刪除 - 它與創建相同,但是一旦會話關閉,它就會丟棄所有內容。
  4. 驗證 - 它證明或地圖或註釋匹配模式。它適用於生產環境。

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

我希望它能幫助。

23

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

如果您將屬性'password'中的值自動設置並使用? –

+1

是的。休眠會自動完成。 –

5

Hibernate不會爲你創建的數據庫中,只有表。要創建數據庫,您需要通過向URL添加參數來告訴MySQL創建數據庫。例如: -

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

我真的很喜歡這個解決方案,但它不適合我。我得到'com.mysql.cj.jdbc.exceptions.CommunicationsException:通信鏈路故障' – codepleb