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>

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

最新文章

  1. Oracle 哈希连接原理
  2. 单独使用jdbc编程问题总结(一)
  3. 【WP 8.1开发】上下文菜单
  4. 第六章:javascript:字典
  5. [原创]安装Oracle 11gR2,以及如何在win8下使用plsql develper连接Oracle数据库 ,在这里和大家分享下
  6. 手机端上传未知图片大小,js设置宽高比例
  7. VC++ 工程添加 Unicode Debug和Unicode Release编译支持
  8. IE10-浏览器实现placeholder效果
  9. Cacti &#39;graph_xport.php&#39; SQL注入漏洞
  10. Compiling JSPs Using the Command-Line Compiler---官方
  11. MEF初体验之一:在应用程序宿主MEF
  12. [Spark] - Spark部署安装
  13. LOOKUP函数入门
  14. HNOI2002 营业额统计(Splay Tree)
  15. asp.net core 集成 log4net 日志框架
  16. PCL-CMAKELIST书写格式
  17. 牛客网剑指offer 二维数组的查找
  18. 函数,lambda函数,递归函数,内置函数(map,filter),装饰器
  19. T-SQL 事务2
  20. 远程桌面控制项目开发(Spring+Netty+Swing)

热门文章

  1. 手机调取摄像头问题(getUserMedia)
  2. 王译潇20162314 实验报告三plus结对编程四则运算第一阶段
  3. 如何理解 Python 中的__init__
  4. Qt查找孩子findChild
  5. 去掉xml中的空格和换行符
  6. MongoDB快速入门(十二) -- 索引
  7. API接口幂等性框架设计
  8. PAT1054. The Dominant Color (20)
  9. nginx上布置thinkphp
  10. java加载jdbc驱动三种方式的比较