hibernate正向工程生成数据库

hibernate.cfg.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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">
 
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>
 <session-factory>
  <!-- 指定连接数据库所用的驱动 -->
  <property
name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <!-- 指定连接数据库的url,hibernate连接的数据库名 -->
  <property
name="connection.url">jdbc:mysql://localhost:3306/wsnsp</property>
  <property
name="connection.useUnicode">true</property>
  <property
name="connection.characterEncoding">gbk</property>
  <!-- 指定连接数据库的用户名 -->
  <property
name="connection.username">root</property>
  <!-- 指定连接数据库的密码 -->
  <property
name="connection.password">1111</property>
   
  <!-- 指定数据库方言 -->
  <property
name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
  <!-- 根据需要自动创建数据库 -->
  <property
name="hbm2ddl.auto">create</property>
  <!-- 显示Hibernate持久化操作所生成的SQL -->
        <property
name="show_sql">true</property>
  <!-- 将SQL脚本进行格式化后再输出-->
        <property
name="hibernate.format_sql">true</property>
  <!-- 罗列所有的映射文件-->
  <mapping
resource="ty/change/wsn/entity/Coordinator.hbm.xml"/>
  <mapping
resource="ty/change/wsn/entity/EndDevice.hbm.xml"/>
  <mapping
resource="ty/change/wsn/entity/Router.hbm.xml"/>
  <mapping
resource="ty/change/wsn/entity/User.hbm.xml"/>
  <mapping
resource="ty/change/wsn/entity/ZigBeeNode.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

CreateDB.java

1
2
3
4
5
6
7
8
9
10
11
12
13
package
ty.change.wsn.action;
 
import
org.hibernate.cfg.Configuration;
import
org.hibernate.tool.hbm2ddl.SchemaExport;
 
public
class
CreateDB { 
    public
static void
main(String[] args) { 
        //装载配置文件 
        Configuration cfg =
new Configuration().configure(); 
        SchemaExport export =
new SchemaExport(cfg); 
        export.create(true,
true); 
    
}

运行CreateDB.java即可。

第一次运行程序时,将Hibernte中的hibernate.hbm2ddl.auto设置成create,让Hibernate帮助自动建表,但不成功,报了如下信息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 1。

后来,网上查找一番,发现是因为type=InnoDB在5.0以前是可以使用的,但5.1之后就不行了。如果我们把type=InnoDB改为engine=InnoDB就不会有这个问题。但是,我想使用Hibernate,自动帮我建表,怎么办呢。这就与我们指定的数据库方言(dialect)有关了。

之前我的配置是:

1
<prop
key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>

现在改为:

1
<prop
key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>

好了,这样问题就解决了。总结下:

Using

'MySQL5InnoDBDialect'
 works with 
5.1
 and 
5.5
.

如果没有hbm.xml映射文件,而采用的是hibernate annotation方式,并且有hibernate配置文件cfg,只需要将hibernate.cfg.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<strong><?xml
version='1.0'
encoding='utf-8'?>
 
<!DOCTYPE
hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 
 <hibernate-configuration>
     <session-factory>
         <!-- hibernate配置 -->
        <property
name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property
name="connection.url">jdbc:mysql://localhost:3306/db_shome</property>
        <property
name="connection.username">root</property>
        <property
name="connection.password">1111</property>
        <property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property
name="hibernate.connection.pool.size">20</property>       
        <property
name="show_sql">true</property>
        <property
name="hbm2ddl.auto">create</property>
        <property
name="current_session_context_class">thread</property>
  
        <mapping
class="com.java1234.model.User"/>
        <mapping
class="com.java1234.model.Grade"/>
        <mapping
class="com.java1234.model.Student"/>
         
    </session-factory>
</hibernate-configuration></strong>

注意:

1
<strong><property
name="hbm2ddl.auto">create</property></strong>

在数据库中新建对应的数据库名启动工程后查询数据库(比如登录验证用户名密码)就可以生成数据库表了

hibernate正向工程生成数据库的更多相关文章

  1. 懒要懒到底,能自动的就不要手动,Hibernate正向工程完成Oracle数据库到MySql数据库转换(含字段转换、注释)

    需求描述 需求是这样的:因为我们目前的一个老项目是Oracle数据库的,这个库呢,数据库是没有注释的,而且字段名和表名都是大写风格,比如 在代码层面的po呢,以前也是没有任何注释的,但是经过这些年,大 ...

  2. Hibernate正向工程(实体类-->数据库)

    1,新建实体类News.java package com.hanqi.dao; import java.util.Date; public class News { private Integer i ...

  3. eclipse下如何使用Hibernate反转工程生与数据库对应的实体类和映射文件(以MySQL为例)

    首先需要为eclipse添加对Hibernate的支持(也就是下载的Hibernate中的jar包),下载方法另查,这里不多做阐述. 想要使用反转工程,首先要下载Hibernate反转工程的插件Jbo ...

  4. hibernate+mysql 自动生成数据库问题

    Hibernate Entity类 表名注解大写时,在windows下mysql自动生成的表都为小写(不区分大小写),在linux下mysql自动生成区分大小写.导致数据库问题. 原因(window下 ...

  5. hibernate通过配置文件生成数据库信息

    hibernate可以通过配置文件在数据库生成相应的数据库信息.也可以把数据库的信息生成相应的代码(实体类操作类和映射文件) 下面是通过代码默认对hibernate.cfg.xml信息在数据库生成信息 ...

  6. powerDesigner 正向工程生成sql注释

    找到script-->objects-->column-->add value内容如下: %:COLUMN% %:DATATYPE%[.Z:[%Compressed%? compre ...

  7. hibernate笔记--通过SchemaExport生成数据库表

    方法比较简单,项目中只需要两个java类(一个实体类,如User,一个工具类),两个配置文件(hibernate必须的两个配置文件hibernate.cfg.xml,与User.hbm.xml),即可 ...

  8. 用eclipes 添加jboss tools中的hibernate tool进行反向工程生成数据库对应的BOJO(Javabean)

    用eclipes 添加jboss tools中的hibernate tool进行反向工程生成数据库对应的BOJO(Javabean) 安装: 在help中eclise marksplace中查询JBo ...

  9. Hibernate 由实体类与配置文件的配置关系生成数据库中的表

    import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class ...

随机推荐

  1. poj1694

    /*给出一棵树的描述 第一行输入t,代表案例的个数 第二行一个n代表这棵树有n个节点 接下来n行第一个数是节点的编号,根节点编号为1,然后第二个数是节点的个数,如果为0那就没子节点,否则输入节点的 编 ...

  2. Go语言学习之常量(The way to go)

    生命不止,继续go go go . 上一篇博客<Go语言学习之变量(The way to go)介绍了go中的变量,今天就介绍常量. const关键字 跟c++中一样,go中同样具有const关 ...

  3. MySQLdump增量备份、完全备份与恢复

    在数据库表丢失或损坏的情况下,备份你的数据库是很重要的.如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态.场景:每周日执行一次完全备份,每天下午1点执行MySQLdum ...

  4. Spring AOP(1)

  5. idea中git合并切换分支等操作

    https://blog.csdn.net/autfish/article/details/52513465

  6. Extracting info from VCF files

    R, Bioconductor filterVcf: Extract Variants of Interest from a Large VCF File (Paul Shannon) We demo ...

  7. vs2013 浏览器 browserlink 不停访问

  8. ubantu中让g++支持c++11的办法

    g++ main.cpp -std=c++11 -o a 其中: main.cpp是要编译的源文件 a是编译后的文件名 注意-std=c++11不要写成-std=c11

  9. mysql数据库优化课程---12、mysql嵌套和链接查询

    mysql数据库优化课程---12.mysql嵌套和链接查询 一.总结 一句话总结:查询user表中存在的所有班级的信息? in distinct mysql> select * from cl ...

  10. 智课雅思词汇---二十五、形容词后缀-ate-fic-ose-ulent-olent-ous-ulous-y

    智课雅思词汇---二十五.形容词后缀-ate-fic-ose-ulent-olent-ous-ulous-y 一.总结 一句话总结: 1.形容词后缀-ate(determinate)? determi ...