Spring Boot JPA-Hibernate

Hibernate与Spring Data JPA:深入解读两大持久化框架的优劣与选择 亲爱的读者,你是否在处理Java应用程序的数据库交互时,曾对选择哪种持久化框架感到困惑?你是否曾对Hibernate和Spring Data JPA之间的关系感到好奇?今天,我将带你深入探索这两个流行的Java持久化框架,帮助你更好地理解它们的优缺点,以及在何种情况下应该选择哪一个。首先,让我们来了解一下Hibernate和Spring Data JPA的基本概念。 阅读详情

步骤

(1)在pom中添加mysql,spring-data-jpa依赖;

<!--添加mysql数据库驱动依赖包-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
  <!--添加spring-data-jpa依赖-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-jpa</artifactId>
 </dependency>

(2)在application.properties文件中配置mysql连接配置文件;

########################################################
###datasource -- 指定mysql数据库连接信息.
########################################################
spring.datasource.url = jdbc:mysql://localhost:3306/springboot?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = Root@123
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10

(3)在application.properties文件中配置JPA配置信息;

########################################################
### Java Persistence Api --  Spring jpa配置信息
########################################################
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
#[org.hibernate.cfg.ImprovedNamingStrategy  #org.hibernate.cfg.DefaultNamingStrategy]
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

(4)编写实体类

    如何实现持久化呢??
        a.使用@entity进行实体类的持久化操作,当JPA检测到我们的实体类由@Entity注解的时候,会在数据库中生成对应的表结构信息。
   如何指定逐渐以及主键的生成策略?
        b.使用@Id指定主键。

package com.huawei.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * 创建一个实体类。
 * 如何实现持久化呢??
 * 1.使用@entity进行实体类的持久化操作,当JPA检测到我们的实体类由@Entity注解的时候,会在数据库中生成对应的表结构信息。
 * 如何指定逐渐以及主键的生成策略?
 * 2.使用@Id指定主键。
 */
@Entity
public class Cat
{
    /**
     * 使用注解@Id指定主键
     * 使用@GeneratedValue指定主键生成策略
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String catName;
    private int catAge;

    public Cat(int id, String catName, int catAge)
    {
        this.id = id;
        this.catName = catName;
        this.catAge = catAge;
    }

    public Cat(String catName, int catAge)
    {
        this.catName = catName;
        this.catAge = catAge;
    }

    public Cat()
    {
    }

    public int getId()
    {
        return id;
    }

    public void setId(int id)
    {
        this.id = id;
    }

    public String getCatName()
    {
        return catName;
    }

    public void setCatName(String catName)
    {
        this.catName = catName;
    }

    public int getCatAge()
    {
        return catAge;
    }

    public void setCatAge(int catAge)
    {
        this.catAge = catAge;
    }

    @Override
    public String toString()
    {
        return "Cat{" +
                "id=" + id +
                ", catName='" + catName + '\'' +
                ", catAge=" + catAge +
                '}';
    }
}

此时运行app.java就会创建对用的表

(5)Repository类

package com.huawei.repository;

import com.huawei.bean.Cat;
import org.springframework.data.repository.CrudRepository;

public interface CatRepository extends CrudRepository<Cat, Integer>
{
}

(6)service类

package com.huawei.service;

import com.huawei.bean.Cat;
import com.huawei.repository.CatRepository;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.transaction.Transactional;

@Service
public class CatService
{
    @Resource
    private CatRepository catRepository;

    @Transactional
    public void save(Cat cat) {
        catRepository.save(cat);

    }
    public void delete(int id) {
        catRepository.deleteById(id);

    }
    public Iterable<Cat> getAll() {
        return catRepository.findAll();

    }
}

(7)controller类

package com.huawei.controller;

import com.huawei.bean.Cat;
import com.huawei.service.CatService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
@RequestMapping("/cat")
public class CatController
{
    @Resource
    private CatService catService;

    @RequestMapping(value = "/save")
    public String save() {
        Cat cat = new Cat();
        cat.setCatName("jack");
        cat.setCatAge(3);
        catService.save(cat);
        return "save ok.";
    }
    @RequestMapping("/delete")
    public String delete(){
        catService.delete(1);
        return "delete ok";
    }

    @RequestMapping("/getAll")
    public Iterable<Cat> getAll(){
        return catService.getAll();
    }
}

知识点讲解:

Repository接口

Repository接口是Spring data的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法:

public interface Repository<T, ID>
PagingAndSortingRepository接口

该接口提供了分页与排序功能

    Iterable<T> findAll(Sort var1);

    Page<T> findAll(Pageable var1);

定义接口实现Repository接口

 

 

 

 

 

 

 

 

Spring Boot(六):Spring Boot 集成 hibernate & JPA 今天我们继续来学习Springboot对象持久化。首先JPA是Java持久化API,定义了一系列对象持久化的标准,而hibernate是当前非常流行的对象持久化开源框架,Spring boot就默认集成了这种框架,加速web应用开发。 阅读详情

相关推荐

Linux下用SquareLine Studio开发LVGL界面:从安装到实战的完整避坑指南

本文提供了一份在Linux系统下使用SquareLine Studio开发LVGL图形界面的完整实战指南。内容涵盖从SDL库安装、SquareLine Studio环境配置、界面可视化设计,到工程导出、源码编译及常见错误排查的全流程。重点解析了如何将设计界面无缝集成到Linux开发流程中,并针对嵌入式设备移植提供了关键步骤,旨在帮助开发者高效避坑,快速上手LVGL界面开发。

egg99的博客 905

Spring JPA与Hibernate学习使用

在hibernate中,session管理着所有的持久化对象的数据。EntityManagerFactory,作为EntityManager的工厂,包含有当前O-R映射的元数据信息,每个EntityManagerFactory,可称为一个持久化单元(PersistenceUnit),每个持久化单元可认为是一个数据源的映射(所谓数据源,可理解为一个数据库,可以在应用服务器中配置多个数据源,同时使用不同的PersistenceUnit来映射这些数据源,从而能够很方便的实现跨越多个数据库之间的事务操作!

weixin_44877172的博客 1815

【QT】基于QSerialPort的跨平台串口通信实战指南

本文是一份基于Qt QSerialPort模块的跨平台串口通信实战指南。详细介绍了从硬件基础、QSerialPort核心类使用、参数配置、设备自动发现到数据异步读写和错误处理的完整流程,并通过构建一个功能齐全的串口调试助手实例,帮助开发者快速掌握在Windows、Linux和macOS系统下进行高效、稳定的串口应用开发。

a1b2c3d的博客 982

[spring] spring jpa - hibernate 名词解释&配置

之前过了一遍依赖注入的内容,这次过一下数据相关的部分,完成了这部分内容,下篇就涉及到 API 实现了操作的部分放到下一篇,本篇主要是概念+配置整体课程上来说,已经完成了将近 1/3,年底之前应该说可以把 spring boot 相关的内容滚完。

GoldenaArcher的博客 564

Windows(Win10、Win11)本地部署开源大模型保姆级教程

最近开源大模型可谓闹的沸沸扬扬,尤其是Microsoft开源的和Meta开源的llama3 70b,评测都已经接近了的水平。鉴于还有很多同学不会在上部署和使用本地模型,因此我们出一期保姆级教程。本文讲述了如何在上本地部署大模型。从最基础的软件安装到环境配置都进行了截图展示,希望对非计算机的同学也有所帮助。AI时代我们每个人都必须要掌握一些AI知识,相信不断学习的你一定不会被AI淘汰。这只是开始,后面我们还有很多工作要做,尤其是提示词和智能体。

AIGIS的博客 3万+

scGPT学习资料汇总 - 单细胞多组学基础模型

scGPT(single-cell Generative Pre-trained Transformer)是一个针对单细胞多组学数据的基础模型,由多伦多大学Wang Bo实验室开发。该模型通过在超过3300万个细胞上进行生成式预训练,捕捉了基因和细胞之间的复杂关系,为多种下游任务提供了强大的基础。scGPT为单细胞分析提供了强大的基础模型和丰富的资源。通过本文汇总的学习材料,读者可以快速掌握scGPT的使用,并将其应用到自己的研究中。

2401_87189860的博客 838

【SpringBoot整合JPA框架(hibernate实现)详解】(附详细代码)

Java Persistence API(JPA)是Java EE和Java SE平台的一部分,提供了一种简单的对象关系映射(ORM)机制,用于将Java对象持久化到关系型数据库中。JPA通过注解或XML配置文件实现实体类与数据库表之间的映射,简化了数据库操作的过程。

qq_45759093的博客 4205

多智能体强化学习算法【三】【QMIX、MADDPG、MAPPO】

相关文章: 1.QMIX算法简述 QMIX是一个多智能体强化学习算法,具有如下特点: 1. 学习得到分布式策略。 2. 本质是一个值函数逼近算法。 3. 由于对一个联合动作-状态只有一个总奖励值,而不是每个智能体得到一个自己的奖励值,因此只能用于合作环境,而不能用于竞争对抗环境。 4. QMIX算法采用集中式学习,分布式执行应用的框架。通过集中式的信息学习,得到每个智能体的分布式策略。 5. 训练时借用全局状态信息来提高算法效果。是后文提到的VDN方法的改进。 6. 接上一条,QMIX设计一个神经网络来

丨汀、的博客 5471

手把手搭建springboot项目04-springboot整合JPA-Hibernate + QueryDSL

概念了解ORM:对象关系映射,为了解决面向对象与关系数据库存在的互不匹配的现象的技术。(表字段映射实体类)ORM框架:连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中常用的ORM框架有Mybatis、Hibernate:是一种ORM规范。把开发者从繁琐的SQL代码中解脱出来。Hibernate 实现了 JPA 规范: spring 提供的一套简化 JPA 开发的框架,可以在不写接口实现的情况下,实现对数据库的访问和操作。

DD-Blog 1938

一个车载HUD的设计参考

一个车载HUD的设计参考

weixin_72050316的博客 796

matlab计算图像信噪比SNR

【代码】matlab计算图像信噪比SNR。

baidu_34971492的博客 1396

Spring Boot 整合Spring Data JPA之Hibernate JPA(七)

Spring Boot 整合Spring Data JPA之Hibernate JPA(七) 在spring boot整合spring data jpa之前先了解一下Hibernate JPA JPA:由 Sun 公司提供了一对对于持久层操作的标准(接口+文档) Hibernate:是 Gavin King 开发的一套对于持久层操作的自动的 ORM 框架。 Hibernate JPA:是在 Hibernate3.2 版本那种提供了对于 JPA 的标准的实现。提供了一套按 照 JPA 标准来实现持久层开发的

m0_38075227的博客 384

030、微透镜阵列与光场成像:从光场相机到深度感知的演进

文章摘要: 光场成像通过微透镜阵列(MLA)同时记录光线的位置与方向,实现单次曝光获取三维信息。其核心架构包括主镜头+MLA+传感器或相机阵列,各有分辨率与体积的权衡。光场支持先拍照后对焦和深度估计,但受限于微透镜基线短,精度较低。深度算法需结合多视角立体匹配与极平面图像分析,并处理噪声和温度漂移等实际问题。光场适用于短距离动态场景(如手势识别),而远距离高精度需求仍需激光雷达。建议初学者通过二手光场相机和开源工具入门,理解光场“角度域”与“空间域”的协同机制。

sundong_81的博客 50

Spring Boot整合JPA/Hibernate完整指南

摘要:本文介绍了Spring Boot与JPA/Hibernate的集成实践,涵盖基础概念、项目配置、实体映射和Repository使用。JPA作为ORM标准规范与Hibernate实现相结合,在Spring Boot中通过简单配置即可实现高效数据访问。内容包括数据源配置、实体关系映射(一对一、一对多、多对多)以及Spring Data JPA Repository的高级查询功能。通过示例代码展示了如何定义实体、创建自定义查询和实现分页功能,为构建企业级数据持久层提供了完整解决方案。

随便写写 1002

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

从零开始 Spring Boot 48:JPA & Hibernate

对象关系映射(ORM)是将Java对象转换为数据库表的过程。换句话说,这允许我们在没有任何SQL的情况下与关系数据库进行交互。Java Persistence API(JPA)是一个定义如何在Java应用程序中持久化数据的规范。JPA的主要焦点是ORM层。Hibernate是目前使用的最流行的Java ORM框架之一。它的第一个版本几乎是20年前的事了,现在仍然有优秀的社区支持和定期发布。此外,Hibernate是JPA规范的标准实现,它还具有一些特定于Hibernate的附加特性。以上内容摘抄自。

梦幻天空 1076

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Spring Boot】Spring Boot REST + JPA + Hibernate + MySQL 示例

文章目录演示工具版本MySQL 数据库架构项目结构Maven 文件在 application.properties 文件中配置属性创建 DAO创建 Service创建 Controller创建 Main类创建测试类测试应用程序1. 使用Eclipse2. 使用Maven命令3. 使用可执行的JAR测试参考文献源码下载 本页将介绍spring boot REST + JPA + hibernate + MySQL的例子。在这里,我们将创建一个REST应用程序,使用MySQL执行CRUD操作。Spring bo

猫巳的博客 1024

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring Boot中使用Hibernate/JPA

在Spring Data JPA中,如果默认的查询方法(通过方法命名规则生成的查询)无法满足需求,可以通过@Query注解编写自定义SQL或JPQL(Java Persistence Query Language)查询。通过@Query注解,可以在Spring Data JPA中灵活地编写自定义SQL或JPQL查询,满足复杂的业务需求。JPQL适用于面向对象的查询,而原生SQL适用于直接操作数据库表。使用@Modifying和处理更新和删除操作。分页和排序可以通过Pageable和Sort参数实现。

qq_50372901的博客 775

Spring Boot 扩展:使用 Hibernate & JPA 持久化 Java 对象

我今天介绍了使用 Hibernate API 和 JPA 进行 Java 实体类对象持久化方法。希望今天的介绍能对你有所帮助。

Java技术攻略的博客 845

Spring Boot教程 | 第七篇:Spring Data JPA (Hibernate) 事务控制

一、前言 [此篇很多是我自己的理解和总结,如果有错误的地方欢迎批评指正。部门后端人员务必全部阅读完此篇,尤其是红色字体部分!] 1.1 事务的概念 事务是数据库管理系统执行过程中的一个逻辑单位,一个操作序列。就数据库事务而言它的存在包含有以下两个目的: 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。 当多个应用程序在并发访问...

好博的博客 3351

Spring-boot 整合sqlite使用Hibernate和Jpa操作

https://blog.csdn.net/tianyaleixiaowu/article/details/79445561这篇博客进行了介绍,在windows下可以正常使用,但是在使用docker或linux环境运行springboot会报错,故此重新整理,做一记录,同时供遇到问题的朋友参考;1、application.properties增加以下配置:spring.jpa.database-p...

RiverRiverSmile的博客 3171

Spring Boot之JPA-Hibernate

在说具体如何在spring boot使用Hibernate前,先抛装引玉些知识点?什么是JPA呢? JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 http://baike.baidu.com/link?url=LdqIXvzTr0RDjY2yoRdpogDdzaZ_L-DrIO...

meng_xiaohua的博客 387

springboot初级学习系列之九Spring Boot JPA-Hibernate进行增删改查

1、在pom.xml添加mysql,spring-data-jpa,hibernate依赖        有的不需增加hibernate依赖,有的必须增加,自己可以试试哪个不报错&lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifact...

煺罟很 2284

Multi-tenant applications using Spring Boot, JPA, Hibernate and Postgres

Revision #1 on May 9th, 2018: Save operations were failing, added support for Actor instances to be updated via a PATCH endpoint. Updated Transaction Manager section. Revision #2 on Mar 25th, 2019: Ex...

隔壁老瓦的专栏 1147

掌握Spring Boot数据库集成:用JPA和Hibernate构建高效数据交互与版本控制

这篇博客从基础配置到高级优化,全面探讨了Spring Boot中使用JPA和Hibernate进行数据库交互的相关技术,并为数据迁移和版本控制提供了可行的方案。

2202_76097976的博客 4694

Spring Boot 使用JPA(Hibernate)操作数据库

使用JPA(Hibernate)操作数据库 JAP(Java Persisitence API),定义了对象关系映射(ORM)以及实体对象持久化的标准接口。 概述 在spring boot中JPA是依靠Hibernate才得以实现的。 JPA所维护的核心是实体(Entity Bean),而它是通过一个持久化上下文(Persinstence Context)来使用的。持久化上下文包含以下3个部分: ...

Sadlay的博客 2045

【spring boot hibernate】hibernate命名策略spring.jpa.hibernate.naming-strategy不起作用

对于 spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy hibernate命名策略设置之后不起作用的处理方式:http://www.cnblogs.com/sxdcgaq8080/p/7890218.html,查看1.JPA hibernate命名策略即可   现在这里说一下原因,为什...

weixin_34405354的博客 6005
上一篇: springboot学习之springboot + devtools实现热部署
下一篇: Spring Boot JdbcTemplate
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值