当前位置: 首页 > news >正文

SpringBoot整合JPA和Hibernate框架

Springboot整合JPA+Hibernate框架【待完成】

  • 随着MybatisPlus技术的发展,JPA和Hibernate技术已经逐步淘汰
    JPA遵循了Hibernate框架规则,目前使用的不多
1、添加依赖
<!--jpa-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2、添加配置
# JPA配置
spring.jpa.database = MYSQL
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
3、创建单表实体
  • @Entity
  • @Table
@Data
@Entity
@Table(name = "student")
public class Student implements Serializable {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id ;private String name;private Byte sex;private String numberId;
}
@Data
@Entity
public class Student {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "student_id")private int id;@Column(name = "student_name")private String name;@Column(name = "student_password")private String password;//多对一字段@ManyToOne(cascade = CascadeType.ALL)@JoinColumn(name = "school")private School school;//多对多字段@ManyToMany(cascade = CascadeType.ALL,mappedBy = "students")//mappedBy=“关联属性名”private Set<Teacher> teachers;
}
@Data
@Entity
@Table(name = "teacher")
public class Teacher {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "teacher_id")private int id;@Column(name = "teacher_name")private String name;@Column(name = "teacher_password")private String password;@ManyToOne(cascade = CascadeType.ALL)@JoinColumn(name = "school")private School school;@ManyToMany(cascade = CascadeType.ALL)@JoinTable(name = "teacher_student",//中间表名joinColumns = {@JoinColumn(name = "teacherid")},//当前对象id在中间表的列名inverseJoinColumns = {@JoinColumn(name = "studentid")}//另一张表在中间表的列名)private Set<Student> students;}@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class School {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "school_id")private int id;@Column(name = "school_name")private String name;@OneToMany(cascade = CascadeType.ALL,mappedBy = "school")private Set<Student> students;@OneToMany(cascade = CascadeType.ALL,mappedBy = "school")private Set<Teacher> teachers;
}
http://www.lryc.cn/news/145745.html

相关文章:

  • Java中文件的创建(三种方式),文件常用的方法
  • Spring boot中调用C/C++(dll)
  • 【Apollo学习笔记】——规划模块TASK之PATH_DECIDER
  • Lua学习(二)
  • 制作鲜花商城小程序的详细步骤
  • Ubuntu20以上高版本如何安装低版本GCC
  • context.WithCancel()的使用
  • vue3中引入百度地图
  • 【Linux-Day8- 进程替换和信号】
  • 日志文件之间关系和介绍及应用
  • mac电脑屏幕录制Berrycast Mac屏幕录制软件
  • 机器学习笔记之最优化理论与方法(一)最优化问题概述
  • 【ES5新特性一】 严格模式语法变化、全局的JSON对象、编码和解码的方法
  • Java【手撕滑动窗口】LeetCode 3. “无重复字符的最长子串“, 图文详解思路分析 + 代码
  • 学习哈哈哈哈
  • 05-基础例程5
  • 双基证券:预计未来还会有更多政策来吸引增量资金
  • 前端:html实现页面切换、顶部标签栏,类似于浏览器的顶部标签栏(完整版)
  • 强化自主可控,润开鸿发布基于RISC-V架构的开源鸿蒙终端新品
  • 软件设计师知识点·1
  • 修改Jupyter Notebook默认打开路径
  • 经典卷积网络
  • react+koa+vite前后端模拟jwt鉴权过程
  • VK1616是LED显示控制驱动电路/LED驱动IC、数显驱动芯片、数码管驱动芯片
  • 开箱报告,Simulink Toolbox库模块使用指南(五)——S-Fuction模块(C MEX S-Function)
  • 摄像头的调用和视频识别
  • 多通道分离与合并
  • JOJO的奇妙冒险
  • LeetCode56.合并区间
  • 【内推码:NTAMW6c】 MAXIEYE智驾科技2024校招启动啦