美文网首页
记一次hibernate项目遇到的坑,你知道嘛?

记一次hibernate项目遇到的坑,你知道嘛?

作者: 技术指北 | 来源:发表于2021-07-06 23:15 被阅读0次

简介

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 的长度、唯一性约束等:

改变约束 重启 数据表没变 新加属性

只能自己手动去数据库做修改,巨坑;仅在此记录一下,便于各位道友时常来翻阅一下;

好了,若觉得文章还不错,记得点赞评论转发哦!!!

相关文章

网友评论

      本文标题:记一次hibernate项目遇到的坑,你知道嘛?

      本文链接:https://www.haomeiwen.com/subject/dopnultx.html