繁体   English   中英

Hibernate 自动创建数据库

[英]Hibernate auto create database

我有一个 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

根据配置文件,它可能已经这样做了,我不知道。

提前致谢。

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

会做

Hibernate 不会为您创建数据库,只会为您创建表。 要创建数据库,您需要通过向 URL 添加参数来告诉 MySQL 创建它(如果它不存在)。 例如:

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

自动属性有多种选择。

  1. create - 它创建新表对应的映射或注释。 它删除现有的表和数据。
  2. 更新 - 保留现有数据和表格。 它更新架构。 在这里,我们必须照顾contants。
  3. create-drop - 它与 create 相同,但是一旦会话关闭,它就会删除所有内容。
  4. 验证 - 它验证或匹配模式与地图或注释。 它适用于生产环境。

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

我希望它有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM