Spring Boot入门系列之:二、Spring Boot整合JPA

Spring Boot 实战 | Spring Boot整合JPA常见问题解决方案 Spring Boot 整合 JPA(Java Persistence API)主要是指将 Spring Boot 与 JPA 结合,实现对象关系映射(ORM)的功能,从而简化数据库操作。下面详细介绍如何整合 Spring Boot 与 JPA。当你在 Spring Boot 中整合 JPA 并初始化时,可能会遇到一些错误。通过以上步骤,Spring Boot 就成功整合了 JPA,可以方便地进行数据库操作。)和 JPA(spring.jpa. 阅读详情

springboot-jpa

开发工具

系统: windows10

开发工具: Intellij IDEA 2018.2.6

springboot: 2.0.6.RELEASE

jdk: 1.8.0_192

maven: 3.6.0

数据库:mysql8

jpa简介

什么是jpa

JPA(Java Persistence API)是SUN官方推出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate,TopLink,JDO 等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。从开发社区的反映上看,JPA手动极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队,着眼未来几年的技术走向,JPA作为ORM领域的标准化者的目标应该不难实现。
JPA包括一下三方面的技术

  • ORM映射元数据

JPA支持XML和JDK5.0注释两种元数据形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。

  • Java持久化API

用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者可以从繁琐的JDBC和SQL代码中解脱出来。

  • 查询语言(JPQL)

这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

JPA的优势

  • 标准化

JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。

  • 对容器级特性的支持

JPA 框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。

  • 简单易用,集成方便

JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释;JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。

  • 可媲美JDBC的查询能力

JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。

  • 支持面向对象的高级特性

JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。

jpa常用注解

  • @Table

标注实体和表的对应关系,若表名和类型相同时,省略@Table,比如类Users 和表 users若不相同时,必须有@Table,并设置name,为该类对应的表名。@Table(name=“users”)

  • @Entity

Entity说明这个class是实体类,并且使用默认的orm规则,即class名对应数据库表中表名,class字段名即表中的字段名。

  • @Id

声明当前field为映射表中的主键列。 id值的获取方式有五种:TABLE, SEQUENCE, IDENTITY, AUTO, NONE

  • @Transient

表示该属性并不是一个到数据库表的字段的映射,指定的这些属性不会被持久化,ORM框架将忽略该属性。 如果一个属性并非数据库表的字段映射。就务必将其标示为@Transient。否则,ORM框架默认其注解为@Basic

  • @Version

Version指定实体类在乐观事务中的version属性。在实体类重新由EntityManager管理并且加入到乐观事务中时,保证完整性。每一个类只能有一个属性被指定为version,version属性应该映射到实体类的主表上。

  • @Column

Column元数据定义了映射到数据库的列的所有属性:列名,是否唯一,是否允许为空,是否允许更新等。

  • @Lob
    Lob指定一个属性作为数据库支持的大对象类型在数据库中存储。使用LobType这个枚举来定义Lob是二进制类型还是字符类型。LobType枚举类型说明:BLOB 二进制大对象,Byte[]或者Serializable的类型可以指定为BLOB。 CLOB 字符型大对象,char[]、Character[]或String类型可以指定为CLOB。

  • @GeneratedValue

用于标注主键的生成策略,通过 strategy 属性指定。默认情况下,JPA自动选择一个最适合底层数据库的主键生成策略:javax.persistence.GenerationType中定义了以下几种可供选择的策略:IDENTITY:采用数据库 ID自增长的方式来自增主键字段,Oracle 不支持这种方式;AUTO: JPA自动选择合适的策略,是默认选项;SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql 不支持这种方式TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。

创建项目和crud测试

  • pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <groupId>com.andy</groupId>
    <artifactId>spring-boot-data</artifactId>
    <version>1.0.7.RELEASE</version>
    <modelVersion>4.0.0</modelVersion>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>Cairo-SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.3.RELEASE</version>
                <configuration>
                    <!--<mainClass>${start-class}</mainClass>-->
                    <layout>ZIP</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>


  • User.java
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 *
 * @author Leone
 * @since 2018-01-24
 **/
@Entity
@Table(name = "t_user")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long userId;

    @Column(columnDefinition = "varchar(128) not null comment '账号'")
    private String account;

    @Column(columnDefinition = "varchar(128) not null comment '密码'")
    private String password;

    @Column(columnDefinition = "text comment '简介'")
    private String description;

    @Column(columnDefinition = "int(11) not null comment '年龄'")
    private Integer age;

    @Column(columnDefinition = "timestamp not null default current_timestamp comment '创建时间'")
    private Date createTime;

    @Column(columnDefinition = "bit not null comment '是否删除'")
    private boolean deleted;

    public User() {
    }

    public User(Long userId, String account, String password, String description, Integer age, Date createTime, Boolean deleted) {
        this.userId = userId;
        this.account = account;
        this.password = password;
        this.description = description;
        this.age = age;
        this.createTime = createTime;
        this.deleted = deleted;
    }

    // getter setter...
    
}


  • UserRepository.java

由于 UserRepository 继承了 JpaSpecificationExecutor 所以jpa自带了一些通用的方法无需我们自己实现。

import org.apache.ibatis.annotations.Param;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * @author Leone
 * @since 2018-05-11
 **/
public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {

    @Query(value = "select * from t_user where account = ?1", nativeQuery = true)
    User findUserByAccount(@Param("account") String account);

    @Modifying
    @Query("update User set deleted = 1 where userId in ?1")
    Integer delByIds(List<Integer> ids);

}
  • UserService.java
import com.andy.data.entity.User;
import com.andy.data.repository.jpa.UserRepository;
import com.andy.data.repository.mybatis.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Leone
 * @since 2018-07-08
 **/
@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    /**
     * 查询所用
     *
     * @return
     */
    public List<User> getUsers() {
        return userRepository.findAll();
    }

    /**
     * 根据主键查找
     *
     * @param userId
     * @return
     */
    public User getUser(Long userId) {
        return userRepository.findById(userId).orElse(null);
    }

    /**
     * 修改
     *
     * @param user
     * @return
     */
    public User update(User user) {
        return userRepository.save(user);
    }

    /**
     * 删除
     *
     * @param userId
     */
    public void delete(Long userId) {
        userRepository.deleteById(userId);
    }

    /**
     * 条件查询分页
     *
     * @param pageable
     * @param description
     * @return
     */
    public Page<User> page(Pageable pageable, String description, Integer account) {
        Specification<User> specification = (Root<User> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) -> {
            List<Predicate> list = new ArrayList<>();

            list.add(criteriaBuilder.equal(root.get("deleted").as(Integer.class), 0));

            if (!StringUtils.isEmpty(description)) {
                list.add(criteriaBuilder.like(root.get("description"), "%" + description + "%"));
            }

            if (!StringUtils.isEmpty(account)) {
                list.add(criteriaBuilder.equal(root.get("account").as(String.class), account));
            }

            Predicate[] predicates = new Predicate[list.size()];
            criteriaQuery.where(list.toArray(predicates));
            criteriaQuery.orderBy(criteriaBuilder.asc(root.get("userId")));
            return criteriaQuery.getRestriction();
        };
        return userRepository.findAll(specification, pageable);
    }

}
  • 启动类
/**
 * @author Leone
 * @since 2018-05-11
 **/
@SpringBootApplication
public class JpaApplication {
    public static void main(String[] args) {
        SpringApplication.run(JpaApplication.class, args);
    }
}

传送门

Spring Boot整合Spring Data JPA详解 Spring Boot整合Spring Data JPA理解 官方文档: Spring Data JPA 官方文档 一、 Sping Data JPA 简介 在此之前我们首先来认识一下,**Spring Data JPA** 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的JPA 应用框架,底层使用了 Hibernate 的 JPA 技术实现,Spring Data JP... 阅读详情

相关推荐

Spring Boot 7:Spring Boot整合JPA

文章目录一、正文Spring Data JPASpring Boot整合JPA1、创建Spring Boot项目2、添加项目依赖3、设置项目名称和保存位置4、创建ORM实体类1)创建评论实体类Comment2)创建文章实体类Article5 、创建接口6、添加数据源依赖1) pom.xml中添加阿里巴巴数据源依赖2)在全局配置文件里配置数据源3)编写测试方法- testFindAll()4)其他测试方法- test...利用JPA实现个性化操作1、 一、正文 Spring Data JPA 它是Spri

qq_46300856的博客 499

maven打包报错:spring-boot-maven-plugin:2.0.6.RELEASE:repackage failed: Unable to find main class

1 install时发生如下报错 spring-boot-maven-plugin:2.0.6.RELEASE:repackage failed: Unable to find main class 2 解决办法 修改pom.xml文件 将原先的: <build> <plugins> <plugin> <groupId>org.springframework.boot</group

java程序员 1902

Spring Boot:数据库的整合

Spring Boot数据库的整合介绍

啊Q老师 6466

SpringBoot2.x的Maven依赖配置

本篇主要说明以下内容: 1.SpringBoot2.x中Maven的配置内容,即:pom.xml的内容说明 1 Maven依赖的配置方式 使用Maven来配置SpringBoot2.x,有两种方式: 1.SpringBoot2.x的父依赖,在使用SpringBoot2.x生成器生成的项目中,会是这种方式 2.项目独立引入SpringBoot2.x的pom依赖 1.1 SpringBoot2.x...

weixin_34044273的博客 2091

VS2022离线安装总闪退?可能是这个--noWeb参数没加对(完整参数指南)

本文深入解析了VS2022离线安装过程中常见的闪退问题,指出核心原因往往在于命令行参数使用不当,特别是`--noWeb`参数。文章提供了完整的参数使用指南和实战解决方案,包括证书处理、安装器文件修复及自动化脚本,帮助用户彻底解决离线部署中的验证失败与闪退难题。

weixin_28842269的博客 758

MMSegmentation 安装教程,避免mmcv不合适版本,及相关问题解决

都行,不做要求。

qq_43683133的博客 1220

打包报错:spring-boot-maven-plugin:2.0.6.RELEASE:repackage failed: Unable to find main class

Spring boot 执行打包操作时候,报错如下 Execution default of goal org.springframework.boot:spring-boot-maven-plugin:XXXX RELEASE:repackage failed: Unable to find main class pom移除下面的部分 <build> <...

h_sn9999的专栏 2134

在URP中正确写入Sprite深度以使用DOF

我准备在文字冒险中加入景深的效果,但是因为unity内置shader的缘故,sprite是不会写入深度的,而如果要使用PostProcessing的DOF效果的话,是必须要将半透明物体的深度正确写入Depth Buffer的,这篇消耗了我大量精力的文章就是要介绍正确写入的方法。 其实,如果只是要在2D游戏中实现类似于景深的效果,不写入深度其实也是可以的,我找到的有两种方案:一种是实时对Sprite进行模糊计算;二是直接使用离线预模糊的图片,根据强度进行混合。 离线预模糊 虽然这两种方法都可以比较简

FREEstriker的博客 2729

Spring Boot入门系列之:四、Spring Boot整合docker

spring-boot-docker 开发环境 开发工具: Intellij IDEA 2018.2.6 springboot: 2.0.6.RELEASE jdk: 1.8.0_192 maven: 3.6.0 docker: Docker Engine - Community 18.09.0 搭建项目 由于使用了 Spring Cloud 的Eureka所以加了 eureka 的依赖,基本不需...

leone的博客 2501

MFC+Modbus-Tcp协议实现温湿度传感器采集

本文简单介绍MFC使用-Tcp通信实现系列MODBUSTCP型温湿度传感器采集数据。

zhigang_zhao的博客 2830

【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)

本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量化的效果(模型大小),对于以提高精度为目的的读者本文也能够帮助大家展示出现阶段的模型速度指标。所以本文的内容是十分有用的机制,对于大家发表论文来说,下面的图片为运行后的效果可以看到,该有的指标均已打印(本文内容为我独家创新,全网无第二份)下面是效果图和文

Snu77的博客 3628

SpringBoot整合JPA详解

Data@ToString@Entity@Id@GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键/*** @Column 注解可以接受多个参数,常用的参数包括:* name:指定数据库表中的列名。* nullable:指定该列是否可为空,默认为 true。* unique:指定该列是否唯一,默认为 false。* length:指定该列的长度。* precision 和 scale:用于精度和刻度的数字列。

C1226786216的博客 1121

基于VisionMaster实现数据实时存储至MySQL (二)

摘要:之前的分享主要聚焦于简单的一维数据实时存储。但在做缺陷检测项目时,情况往往更加复杂:一张检测图像中可能同时存在多个缺陷,每个缺陷都有一组独立的核心参数(如质心、长短轴、面积等)。如何在 MySQL 中记录这些成组出现的缺陷数据,而不只是简单的单条记录?

haier123888的博客 226

Spring Boot整合Spring Data JPA

Spring Data中按照框架的规范自定义了Repository接口,除了可以使用接口提供的默认方法外,还可以按特定规则来定义查询方法,只要这些查询方法的方法名遵守特定的规则,不需要提供方法实现体,Spring Data就会自动为这些方法生成查询语句。Spring Data对这种特定的查询方法的定义规范如下:以find、read、get、query、count开头。涉及查询条件时,条件的属性使用条件关键字连接,并且条件属性的首字母大写。

daqi1983的博客 1590

高通平台WIFI学习-- 基于6GHZ Discovery (STA Scanning)讲解

本文介绍了6GHz频段的网络扫描优化方案。主要内容包括:1)带内发现机制,将6GHz信道分为优先扫描信道(PSC)和非PSC信道,规范了STA发送探测请求的条件及等待时间;2)带外发现机制,通过RNR信息元素实现跨频段AP发现,减少6GHz频段干扰;3)具体扫描流程示例,包括DBS扫描和敏捷扫描的顺序安排。方案通过优化探测请求发送规则和跨频段信息共享,有效降低了信道污染和扫描延迟,日志数据验证了6GHz信道扫描的具体实现过程。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 267

FineReport实战-- 国内外各地区销售数据分析 多个图表联动

进行国内外各地区业务员销售数据分析是一项复杂但极具价值的任务,它可以帮助企业了解不同市场的表现,并据此调整销售策略以提高整体绩效。实现功能:同一个报表里面多个图表联动问题。

Davina_yu的博客 1198

Java Web开发进阶——Spring Boot与Spring Data JPA

Spring Data JPA 是 Spring Data 项目中的子项目,旨在简化与 JPA(Java Persistence API)的集成。它在标准 JPA 的基础上提供了更高层次的抽象,开发者可以使用极少的代码实现复杂的数据操作。Spring Data JPA 是 Spring 提供的一种面向数据访问的持久化框架,它简化了 JPA 的实现,为开发者提供了一种快速操作数据库的方式。Spring Data JPA 的强大之处在于其灵活的查询方式,支持方法派生、JPQL 和原生 SQL。

好看资源网的博客 2244

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot整合JPA

Spring Data JPA是Spring在ORM框架、JPA规范的基础上封装的一套JPA应用框架,它提供了增删改查等常用功能,使开发者可以用较少的代码实现数据操作,同时还易于扩展。考虑到部分读者可能对Spring Data JPA并不熟悉,在正式讲解Spring Boot整合JPA之前,我们先针对Spring Data JPA的基本使用进行简单介绍,具体内容如下。

2301_82182564的博客 1911

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Spring boot整合JPA:添加spring-boot-starter-data-jpa 依赖报错 解决方法

在Spring boot整合JPA的时候,在网上查询添加的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> ...

Lfanmujin的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

06 Spring Boot整合 Spring Data JPA

JPA (Java Persistence API) : 是Sun 官方提出的Java 持久化规范。Spring Data JPA 是Spring Data 的一个子项目,通过提供基于JPA 的Respository极大地减少了JPA 作为数据访问方案的代码量。 通过Spring Data JPA 框架, 开发者可以省略实现持久层业务逻辑的工作,唯一要做的就是声明持久层的接口,其他都交给Spri...

数据知道的博客 2万+

Spring Boot 整合 Spring Data JPA、strategy 的策略区别、什么是 Spring Data JPA

Spring Boot 整合 Spring Data JPA、strategy 的策略区别、什么是 Spring Data JPA

hutao8896的博客 1113

Spring Boot 整合 Spring Data JPA 入门:只需注解,告别 SQL

Spring Boot 整合 Spring Data JPA 入门:只需注解,告别 SQL。在传统的 Java EE 开发中,我们习惯于使用 JDBC 或 MyBatis 这样的半自动化框架。我们需要手写大量的 SQL 语句,并在 Java 对象和数据库表之间手动进行数据映射。这种方式灵活,但枯燥且容易出错。

夜雨的博客 986

Spring Boot 3 【四】Spring Boot 整合JPA

Spring Data JPA 是 Spring Data 项目的一部分,它为使用 Java Persistence API (JPA) 进行数据库访问提供了一种非常简便的方式。Spring Data JPA 的主要目的是简化基于 JPA 的数据访问层的开发工作,开发者可以更加专注于业务逻辑而不是繁琐的数据访问代码。Spring Data JPA 通过提供一套高度抽象的接口和约定,极大地简化了基于 JPA 的数据访问层的开发工作。

技术管理修行 2396

Spring Boot 整合 Spring Data JPA(JpaRepository)

Spring Boot 整合 Spring Data JPA 一、概念: spring data:spring data 是 spring提供的一个操作数据库的框架。而 spring data jpa 只是 spring data 框架下的一个基于 JPA 标准(规范)的操作数据库的模块。 spring data jpa:基于JPA 的标准 对数据进行操作。简化操作持久层的代码。只需要编写接口就...

dh_sheep的博客 998

Spring Boot数据访问——整合Spring Data JPA篇!超详细!

Spring Data JPA 提供了很多模板代码,易于扩展,可以大幅提高开发效率,使开发者用极简的代码即可实现对数据的访问。基于SpringDataJPA的规范可以提升数据访问层的开发效率和灵活性,开发人员在使用 Spring Data JPA 时,应基于 Spring Data JPA 的规范同时也需要遵守团队的代码规范和风格,保证代码清晰易读,从而开发高质量的程序。

元气满满的霄霄滴博客 2744

Spring Boot 实战(9) springboot 整合 JPA

这篇博客介绍了在 springboot 中如何整合 JPA,并有完整的代码实现。

扬帆向海的博客 2万+
上一篇: Spring Boot入门系列之:四、Spring Boot整合docker
下一篇: Spring Boot入门系列之:三、Spring Boot整合Mybatis
exklin
博客等级 码龄9年 35粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值