我们到底在用Hibernate还是Spring Data JPA还是JPA???

news2024/10/7 18:30:11

Hibernate 和 JPA 和Spring Data JPA

JPA

JPA的全称是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的规范

Hibernate

Hibernate是一个JPA规范的具体实现,是ORM类型的框架,对象映射模型。

Hibernate 可以自动生成 SQL 语句,自动执行

关系

JPA规范本质上就是一种ORM规范,注意不是ORM框架,因为JPA并未提供ORM实现,JPA仅仅定义了一些接口

Hibernate除了作为ORM框架之外,它也是一种JPA实现。

Spring Data JPA

接口的再次封装抽象更多的可用接口

Spring Data JPA是在JPA规范下提供了Repository层的再次封装,提供了更多可用的接口,然后底层通过Hibernate实现

JPA是一种规范,Hibernate是一个实现了JPA规范的框架,Spring Data JPA是对JPA简化操作的实现,实现了更多可用的接口,底层具体实现用了Hibernate。

在SpringBoot环境下使用JPA

导入依赖

spring-boot-starter-data-jpa

配置数据源 

Hibernate的相关配置 HibernateProperties或配到yml中

创建实体类

编写持久层

@Repository
public interface AccountRepository extends JpaRepository<Account, Integer> {
    
}

使用Hibrenate

导入依赖 hibernate-core

Hibernate的相关配置文件

  1. Xxx.hbm.xml:它主要是用于描述类与数据库中的表的映射关系;
  2. hibernate.cfg.xml:它是Hibernate框架的核心配置文件。

在resources目录下创建 hibernate.cfg.xml 配置文件 

使用xml修改表

1.实体类

2.创建实体关系映射文件 xxx.hbm.xml

3.将实体类关系映射文件注册到 Hibernate.cfg.xml 配置文件中

4. 使用 Hibernate API 完成数据操作

一对一

一对多 set 标签来配置实体类中的集合属性 

一个顾客多个订单 private Set<Orders> orders;

 <set name="orders" table="orders">
            <key column="cid"></key>
            <one-to-many class="com.zhijia.entity.Orders"></one-to-many>
 </set>

多对多 多个学生对应多个课程

  column:属性的集合泛型实体类与中间表的外键字段名

<set name="courses" table="student_course">
            <key column="sid"></key>
            <many-to-many class="com.zhijia.entity.Course" column="cid"></many-to-many>
</set>

Hibernate自动创建表的配置文件设置

数据库要预先建立好,因为hibernate只会建表,不会建库

  • create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。
  • update:如果缺少表,则自动建表;如果表里缺少列,则自动添加列。
  • create-drop:启动hibernate时,自动创建表,程序关闭时,自动把相应的表都删除。所以程序结束时,表和数据也不会再存在。
  • validate: 自动校验,如果表结构与实体类不一致,那么不做任何操作,报错

spring:
  jpa:
    hibernate:
      ddl-auto: update  # 有三个选项:update、create、create-drop

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ModuleNotFoundError: No module named ‘google‘

这个错误表明你的代码在执行过程中遇到了一个模块导入问题。根据报错信息&#xff0c;问题似乎出现在导入google.protobuf模块时&#xff0c;提示找不到google模块。 解决这个问题的一种可能方法是确保你的环境中安装了protobuf库&#xff0c;因为google.protobuf实际上是prot…

持续性能优化:确保应用保持高性能

在当今数字化时代&#xff0c;应用程序的性能已经成为用户体验和业务成功的关键因素之一。无论是Web应用、移动应用还是企业级软件&#xff0c;用户对于速度和响应性的要求越来越高。因此&#xff0c;持续性能优化已经成为保证应用在竞争激烈的市场中脱颖而出的重要策略。 什么…

FTP传文件传易丢失且运维管理难,是否有好的替代解决方案?

文件传输协议&#xff08;FTP&#xff09;&#xff0c;诞生于1971年&#xff0c;自20世纪70年代发明以来&#xff0c;FTP已成为传输大文件的不二之选。内置有操作系统的 FTP 可提供一个相对简便、看似免费的文件交换方法&#xff0c;因此得到广泛使用。 后来由于FTP缺乏足够的安…

计算机字节单位以及换算

字节 字节&#xff08;Byte&#xff09;是计算机信息技术用于计量存储容量的一种计量单位&#xff0c;同时也表示一些计算机编程语言中的数据类型和语言字符。字节是二进制数据的单位。一个字节通常8位长。 字节单位 换算 1字节(Byte) 8位(bit) 1KB( KB&#xff0c;千字节) …

Lnmp架构-Redis

redis 部署 make的时候需要gcc和make 如果在纯净的环境下需要执行此命令 [rootserver3 redis-6.2.4]# yum install make gcc -y 注释一下这几行 vim /etc/redis/6739.conf 2.Redis主从复制 设置 11 是master 12 13 是slave 在12 上 其他节点以此内推 此时在 11 master …

【JAVA+Geoserver】使用Geoserver的REST API发布样式,文本丢失问题,已解决

文章目录 问题描述原因分析在geoserver检查sld文本推测一、是否是geoserver-manager的API优化sld文本&#xff0c;导致文本内容丢失结论&#xff1a;geoserver-manager并没有优化文本 推测二、API接口本身就有问题结论&#xff1a;可以确定是geoserver的内部出现问题 解决方法在…

CSS布局,表格按钮无线延长

C有时候有有时候没有&#xff0c;如下样式会导致B在ctrl滚轮放大缩小中的表格会无限加宽 .A{ display: flex; width: 100% } .B{ flex: 1 } 解决方案&#xff1a; 1.如果C一直在 .A{display: flex; width: 100% justify-content: space-between; } .B{width: calc(100% - 200…

移动隔断墙的用途和空间布局,设计合适的结构,包括固定方式

移动隔断墙的用途&#xff1a; 1. 划分空间&#xff1a;移动隔断墙可以在需要时将一个大空间划分为多个小空间&#xff0c;以满足不同的使用需求。 2. 提供隐私&#xff1a;移动隔断墙可以为需要隐私的区域提供屏障&#xff0c;例如办公室中的会议室或私人办公室。 3. 增加灵活…

C语言程序设计——小学生计算机辅助教学系统

题目&#xff1a;小学生计算机辅助教学系统 编写一个程序&#xff0c;帮助小学生学习乘法。然后判断学生输入的答案对错与否&#xff0c;按下列任务要求以循序渐进的方式分别编写对应的程序并调试。 任务1 程序首先随机产生两个1—10之间的正整数&#xff0c;在屏幕上打印出问题…

2023年高教社杯 国赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…

可直接运营的餐饮外卖点餐自提单多门店小程序开发演示

适合鲜花店、蛋糕店、奶茶店、餐饮店、便利店等门店商家的小程序。 小程序系统支持外卖和自提两种模式&#xff0c;帮助商家打造自己的私域流量池&#xff0c;减少对美团和饿了么的依赖&#xff0c;提升用户点餐、就餐体验。 支持会员签到获取积分的功能&#xff0c;积分可用…

喜报|擎创科技携手华胜天成,深度探索企业数字化转型之路

近日&#xff0c;上海擎创信息技术有限公司&#xff08;简称“擎创科技”&#xff09;与北京华胜天成科技股份有限公司&#xff08;简称“华胜天成”&#xff09;达成战略合作伙伴关系。 擎创科技副总裁冯陈湧与华胜天成副总裁崔勇、助理总裁郭涛一致认为在金融、保险、证券、…

神代码鉴赏

1:瞒天过海 猜下如下代码会输出啥&#xff1a; public static void main(String[] args) {// \u000d System.out.println("coder Hydra"); }啥也不输出&#xff0c;不&#xff0c;看结果&#xff1a; 神奇吧&#xff01;这是因为\u000d就是换行符的unicode编码&a…

hive表向es集群同步数据20230830

背景&#xff1a;实际开发中遇到一个需求&#xff0c;就是需要将hive表中的数据同步到es集群中&#xff0c;之前没有做过&#xff0c;查看一些帖子&#xff0c;发现有一种方案挺不错的&#xff0c;记录一下。 我的电脑环境如下 软件名称版本Hadoop3.3.0hive3.1.3jdk1.8Elasti…

Oralce Client11和PL/SQL12安装

初始环境&#xff1a; 1.阿里云轻量应用服务器已经安装Oracle11g https://blog.csdn.net/testleaf/article/details/111826134 2.阿里云轻量应用服务器已经配置Oracle11g https://blog.csdn.net/testleaf/article/details/109096654 具体目标&#xff1a; 1.安装Oralce Client1…

盘点国内2023上半年低无代码平台TOP10:你用了哪款?

随着数字化转型的加速&#xff0c;无代码/低代码平台以其高效、灵活和易用的特性&#xff0c;正在改变着企业应用开发和部署的方式。这些平台正在成为越来越多企业的首选&#xff0c;因为他们可以快速构建和部署应用&#xff0c;以适应不断变化的业务需求。在这个热潮背后&…

【CSS】解决对齐的小问题

问题&#xff1a; 表单或者页面上可能遇到文字无法对平均分&#xff0c;带有冒号的文本无法左右对齐的情况 常见的解决方式&#xff1a; 解决如下图 仍无法解决对齐的问题&#xff0c;还需要考虑字数 解决 这里用css的方式解决 增加 i 标签 固定宽度&#xff0c;设置 i …

IT 支持人员如何应对现代教育技术挑战

将技术融入教学实践为教育行业带来了重大变化。特别是近几年&#xff0c;技术在教育机构提供的产品和服务水平方面发挥了越来越重要的作用。 随着混合灵活教学&#xff08;HyFlex&#xff09;教学模式成为新的当务之急&#xff0c;学生和教职员工都希望技术能够满足自己对灵活…

Java实现根据关键词搜索当当商品列表数据方法,当当API接口申请指南

要通过当当网的API获取商品列表数据&#xff0c;您可以使用当当开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过当当开放平台API获取商品列表&#xff1a; 首先&#xff0c;确保您已注册成为当当开放平台的开发者&#xff0c;并创建…

CSS学习笔记02

CSS笔记02 美化网页元素 为什么要美化网页 目的&#xff1a; 有效的传递页面信息美化网页、页面漂亮、才能吸引用户突显页面的主题提高用户的体验 span标签 span标签是短语内容的通用行内容器&#xff0c;它本身并没有任何特殊语义。 通常我们使用span标签来把我们想要重…