简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
用过hibernate的道友应该都知道,使用hibernate,我们只要建好数据库,然后直接新建实体类,加上相应的注解,hibernate就会帮我自动创建或者更新数据表。
下面记一下hibernate的相关坑点:
新建一个简单的hibernate项目 spring_hibernate,目录如下:
记一次hibernate建表遇到的坑,你知道嘛?
目录
新建一个MySQL数据库 hibernate,不用建表;
目录
数据库
引入hibernate、MySQL依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!-- 添加JPA依赖,官网描述支持spring data JPA 和hibernate-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.5.3.Final</version>
</dependency>
新建实体类 ClassInfo.java
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "t_class_info")
@Data
public class ClassInfo{
@Id
@Column(name = "class_id")
private String classID;
@Column(name = "class_name")
private String className;
@Column(name = "class_type")
private String classType;
}
配置application.yml文件
spring:
datasource:
url: jdbc:mysql://localhost:3306/hibernate?useunicode=true&characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
username: 你的账户
passw-ord: 你的密码
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
current_session_context_class: org.springframework.orm.hibernate4.SpringSessionContext
ok,运行项目,查看数据库。
启动成功
启动成功
数据表
表结构
嗯,就是这么简单!!!
但是,这时候如果你先修改某个属性的一些约束,然后重启项目,它并不会更新到数据库,如下修改属性class_name 的长度、唯一性约束等:
改变约束
重启
数据表没变
新加属性
只能自己手动去数据库做修改,巨坑;仅在此记录一下,便于各位道友时常来翻阅一下;
好了,若觉得文章还不错,记得点赞评论转发哦!!!