Springboot 之 Hibernate自动建表(Mysql)

2016年10月21日 10:39:44

阅读数:8180

本文章来自【知识林】

  • 引入Maven依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

spring-boot-starter-data-jpa中已经包含了Hibernate所需要的相关依赖,所以只需要引入Jpa的依赖即可。

  • 创建配置文件

application.properties中加一行:spring.profiles.active=dev

application-dev.properties配置文件的内容如下:

server.port=80

# Hibernate 相关配置

## 方言
#hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
## 显示Sql
hibernate.show_sql=true
## 自动建表方式
#hibernate.hbm2ddl.auto= update
## 自动扫描的包前缀
entitymanager.packagesToScan= com.zslin ## 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/study05?\
useUnicode=true&characterEncoding=utf-8&useSSL=true&autoReconnect=true ## 用户名
spring.datasource.username=root ## 密码
spring.datasource.password=123 ## 数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver ## 建表方式
spring.jpa.properties.hibernate.hbm2ddl.auto=update # 方言
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

注意:最关键的是最后两个配置,spring.jpa.properties.hibernate.hbm2ddl.auto=update而不是hibernate.hbm2ddl.auto=update,使用了Jpa所以键名称需要有相应调整,否则不会自动建表

spring.jpa.properties.hibernate.hbm2ddl.auto有几种配置:

  • create:每次加载Hibernate时都会删除上一次生成的表,然后重新生成新表,即使两次没有任何修改也会这样执行,这就导致每次启动都是一个新的数据库,也是导致数据丢失的重要原因。

  • create-drop:每次加载Hibernate时都会生成表,但当SessionFactory关闭时,所生成的表将自动删除。

  • update:最常用的属性值,第一次加载Hibernate时创建数据表(前提是需要先有数据库),以后加载HIbernate时只会根据model更新,即使model已经删除了某些属性,数据表也不会随之删除字段。

  • validate:每次加载Hibernate时都会验证数据表结构,只会和已经存在的数据表进行比较,根据model修改表结构,但不会创建新表。

具体配置可参考文章《Springboot 之 文件结构和配置文件》

  • 创建Model实体类
package com.zslin.model;

import javax.persistence.*;

/**
* Created by 钟述林 393156105@qq.com on 2016/10/18 17:15.
*/
@Entity
@Table(name = "t_user")
public class User { @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id; @Column(name = "user_name")
private String userName; private String password; @Column(name = "nick_name")
private String nickName; private String email; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getNickName() {
return nickName;
} public void setNickName(String nickName) {
this.nickName = nickName;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
}
}

注意:

1、 在主建Id上需要加注释:@Id@GeneratedValue(strategy = GenerationType.AUTO)才会自动增长

2、 在需要重新设置表字段名的属性上加注释@Column(name = "字段名")即可。

3、 在类名上添加注释:@Entity@Table(name = "t_user")t_user是表名

  • 启动项目

启动项目后在study05数据库中将出现t_user的数据表,且存在相应的表字段。

示例代码:https://github.com/zsl131/spring-boot-test/tree/master/study05

Springboot 之 Hibernate自动建表(Mysql)的更多相关文章

  1. hibernate自动建表采用UTF-8字符编码

    hibernate自动建表采用UTF-8字符编码 hibernate建表默认为UTF-8编码 >>>>>>>>>>>>>& ...

  2. hibernate自动建表之engine设置

    1.MYSQL的数据库引擎中,只有InnoDB和BDB(Berkley DB )包括了对事务处理和外键的支持.如果数据引擎建为MyISAM则rollback无效. 2.而hibernate自动建表的时 ...

  3. Hibernate自动建表问题

    自动见表配置 <property key="hibernate.hbm2ddl.auto">update</property> 运行时出现了一下错误 org ...

  4. 使用Mysql 5.5数据库Hibernate自动建表创建表出错table doesn't exist

    在mysql 5.0版本以后不支持 type=InnoDB 关键字,需要使用 engine=InnoDB 配置文件方言改成如下即可 <property name="dialect&qu ...

  5. hibernate自动建表技术_采用数据库反向生成技术

    1.首先使用oracle创建一个用户: 登陆sqlplus,并以sysdba登陆到数据库: 2.创建一个用户,并对此用户授予connect,resource两个角色的权限: 3.连接到hibernat ...

  6. 【原创】Hibernate通过实体类自动建表时type=MyISAM的问题

    ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 当使用的mysql数据库为5.5版本时,方言需要设置为 <property name="hibernate.dialect&q ...

  7. 【SSH】——Hibernate实现简单的自动建表

    [与ORM] Object Relational Mapping,对象关系映射,将对象和关系联系了起来.面向对象是从耦合.聚合.封装等的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论 ...

  8. 关于Hibernate 连接mysql不能自动建表的问题

    最近看旧书,李刚那本<轻量级J2EE>在讲解hibernate的时候遇到一个问题,就是与mysql连接后,明明配置了自动建表,却老是建不了表,上网查了发现是方言的原因,到底什么是方言?这里 ...

  9. SpringBoot入门系列~Spring-Data-JPA自动建表

    1.pom.xml引入Spring-Data-Jpa和mysql依赖 <!-- Spring-data-jpa依赖 --> <dependency> <groupId&g ...

随机推荐

  1. SolrCloud之分布式索引及与Zookeeper的集成--转载

    原文地址:http://josh-persistence.iteye.com/blog/2234411 一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库,Solr是以Luc ...

  2. CentOS 安装 Hadoop

    原文地址:http://www.cnblogs.com/caca/p/centos_hadoop_install.html 下载和安装   download hadoop from http://ha ...

  3. go 学习笔记(4) ---项目结构

    go install和go build之争.目前,IDEA插件和LiteIDE都采用了go build.Eclipse插件采用了go install.官方推荐go install方式编译项目,官方项目 ...

  4. #pragma pack

    原文链接: http://www.cnblogs.com/s7vens/archive/2012/03/06/2382236.html pack 为 struct, union 和 class 等的成 ...

  5. PowerDesigner列名作为注释

    Tools -> Execute Commands -> Edit/Run Script 执行以下脚本: Option Explicit ValidationMode = True Int ...

  6. struts2 页面标签或ognl表达式取值--未完待续

    一.加#号取值和不加#号取值的解说 1.s:property 标签——value属性使用事项 1)涉及问题:取值时什么时候该加#,什么时候不加? 2)介绍 <s:property value=& ...

  7. python标准库介绍——15 fileinput 模块详解

    ``fileinput`` 模块允许你循环一个或多个文本文件的内容, 如 [Example 2-1 #eg-2-1] 所示. ====Example 2-1. 使用 fileinput 模块循环一个文 ...

  8. 用platformio编写arduino程序

    哈哈,今天浏览arduino.cc官网,找到一个好东东,以后,在ubuntu下用终端编程在也不发愁了. platformio.org是一个物联网全能的IDE,甚至还贴心的提供了在命令行下编程的版本:p ...

  9. php四种排序算法实现代码

    分享php排序的四种算法与代码. 冒泡:function bubble_sort($arr){ $num = count($arr); for($i=0;$i<$num;$i++){ for($ ...

  10. jQuery.extend()中的布尔值的作用

    jQuery.extend()中,第一个参数可以添加一个布尔值,表示是否深层拷贝,默认是false.但如果设置为true,则表示深层拷贝. 下面来看看什么是深层拷贝: <script type= ...