数据访问:JPA

news2024/11/28 15:44:42

文章目录

  • JPA的由来
  • JPA是什么
  • Spring Data JPA
  • 快速上手


JPA的由来

ORM框架能够将Java对象映射到关系型数据库中,能够直接持久化复杂的 Java对象。ORM框架的出现,可以让开发者从数据库编程中解脱出来,把更多的精力放在业务模型与业务逻辑上。目前比较流行的 ORM框架有MyBatis、Hibernate、TopLink、JDO 等。

在JPA 规范之前,由于没有官方的标准,使得各ORM框架之间的 API差别很大,使用了某种ORM框架的系统会严重受制于该ORM的标准。基于此,Sun引入新的JPA ORM,主要的原因有:其一,简化现有JavaEE和Java SE应用开发工作;其二,Sun希望整合ORM 技术,实现统一的 API调用接口。

JPA是什么

JPA (Java Persistence API)是Sun官方提出的Java持久化规范。它为 Java 开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink、JDO等 ORM框架各自为营的局面。

值得注意的是,JPA 是在充分吸收了现有的 Hibernate、TopLink、JDO等 ORM框架的基础上发展而来的,具有易于使用、伸缩性强等优点。从目前的开发社区的反应上看,PA 受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。
注意:JPA是一套规范,不是一套产品,那么像Hibernate、TopLink、JDO它们是一套产品,如果说这些产品实现了这个JPA规范,那么我们就可以称他们为JPA的实现产品。

Spring Data JPA

Spring Data是Spring 的一个子项目,用于简化数据库访问,包括NoSQL非关系型数据库,另外还包括对关系型数据库的访问支持。Spring Data使我们可以快速简单地使用普通的数据访问技术及新的数据访问技术,Spring Data 会让数据的访问变得更加方便。

Spring Data JPA是Spring 基于ORM框架、JPA 规范的基础上封装的一套JPA 应用框架,可以让开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增、删、改、查等在内的常用功能,且易于扩展,学习并使用Spring Data JPA可以极大提高开发效.Spring Data JPA其实就是Spring 基于 Hibernate之上构建的JPA使用解决方案,方便在Spring Boot项目中使用 JPA 技术。
Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD 都可以依赖于它实现。

快速上手

1.创建项目
这篇就不详细讲了,在上一篇博客中可以查看如何详细快速创建Spring Boot项目上篇博客传送门
但是要记得添加相关的依赖(Spring Data JPA , MySQL Driver)
在这里插入图片描述
在这里插入图片描述
项目 pom.xml 文件如下:

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

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

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

2.application.properties添加配置信息

#配置数据源相关信息
#MySQL5.x版本的驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8

#配置JPA相关信息
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

3.编写实体类:User.java

@Data
@Entity
@Table(name="sys_user")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "usr_id")
    private Long usrId;
    @Column(name="usr_name")
    private String usrName;
    @Column(name="usr_password")
    private String usrPassword;
    @Column(name="usr_role_id")
    private Long usrRoleId;
    @Column(name="usr_flag")
    private Integer usrFlag;
}

JPA注解详细说明如下:

@Entity(name=“EntityName”)必须,用来标注一个数据库表对应的实体,数据库中创建的表明默认和类名一致,其中,name可选,对应数据库中的一个表,使用此注解标记Pojo是一个JPA实体。
@Table(name=“”,catalog=“”,schema=“”)可选,用来标注一个数据库对应的实体类,数据库中创建的表明默认和类名一致,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息
@Id必须,@Id定义了映射到据库表的主键的属性,一个实体只能有一个属性被映射为主键。

4.编写Repository(仓库)
创建UserRository.java

public interface UserRepository extends JpaRepository<User,Long>{
}

5.测试结果

@SpringBootTest
public class UserMapperTester {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testInsert() throws Exception{
        userMapper.insert(new User("ktjiaoyu","123456",9L,1));
    }

    @Test
    public void testGet() {
        User user = userMapper.get(85L);
        System.out.println("usrName:"+user.getUsrName());
    }
}

testInsert()方法运行结果:
在这里插入图片描述
testGet()方法运行结果:
在这里插入图片描述

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

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

相关文章

Open3D 计算投影的点云的尺寸

目录 一、概述 1.1实现步骤 1.2应用场景 二、代码实现 三、实现效果 3.1原始点云 3.2投影后点云 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff08;长期更新&#xff09;-CSDN博客 一、概述 在 Open3D 中&…

electron-vite打包出错

问题&#xff1a;1 electron-vite 安装&#xff0c; 打包下载资源失败&#xff0c;设置国内镜像 由于electron默认打包会从github上下载相关二进制包&#xff0c;众所周知&#xff0c;国内GitHub访问是相当慢的&#xff0c;所以经常会出现下载失败导致打包不成功&#xff0c;…

中兴-ZSRV2路由器-任意文件读取

中兴-ZSRV2路由器-任意文件读取 文章目录 中兴-ZSRV2路由器-任意文件读取免责声明漏洞描述搜索语法漏洞复现修复建议 免责声明 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与教学之用&#xff0c;读者将其信息做其他用途&#xff0c;由用户承担全部法律及连…

upload-labs闯关攻略

pass-1 提前准备好的一个PHP木马&#xff0c;然后将后缀名改为jpg上传 然后在上传的过程中利用抓包&#xff0c;将抓取到的包里面的后缀jpg改为php如图所示&#xff0c;然后放行 接着我们去访问上传的图片信息&#xff0c;如下图所示就为成功 pass-2 提前准备好的一个PHP木马…

线程池相关知识点

线程池是什么相信大家都是知道的&#xff0c;所以这里就不做解释了&#xff0c;直接看相关知识点吧。 初始化线程池方法 继承ThreadPool 实现Runnable 实现Callable 接口 FutureTask &#xff08;可以拿到返回结果&#xff0c;可以处理异常&#xff09; 核心参数 corePoo…

[米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-23 VTC视频时序控制器设计

软件版本&#xff1a;VIVADO2021.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA 实验平台&#xff1a;米联客-MLK-H3-CZ08-7100开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 http…

Javascript LeeCode选题(汉诺塔求解)

LeeCode选题 汉诺塔递归求解move移动函数hanoi函数main方法测试代码&#xff1a;代码实现 汉诺塔递归求解 汉诺塔介绍&#xff1a; 汉诺塔的的图形&#xff08;从上到下1&#xff0c;2&#xff0c;3个&#xff09;实现&#xff1a; 这里我们可以看到因为必须要将第n个移动到…

数据结构与算法 第7天(树和森林)

树 树的存储结构 双亲表示法 找双亲容易&#xff0c;找孩子不容易 孩子链表法 把每个结点的孩子节点排列起来&#xff0c;看成一个线性表&#xff0c;用单链表存 找孩子容易&#xff0c;找双亲难 带双亲孩子链表法 给孩子链表加一个参数&#xff0c;存双亲的下标 孩子兄…

系统思考—盲点

突‮盲破‬点&#xff0c;解‮合锁‬作潜能——JSTO 的‮能高‬碰撞&#xff01; 在今天的JSTO会议中&#xff0c;我们在Check In环‮分节‬享了近1-2周‮实的‬践和反思。这‮环个‬节不仅‮助帮‬大家‮享共‬了更多的‮息信‬和资源&#xff0c;还‮效有‬促进了彼‮间此‬…

jenv 一款macos下的开源JAVA多版本环境安装管理切换工具

一个用于macos/linux下的多版本JAVA环境管理工具 -- jenv, 这款工具和 pyenv 类似,都是基于shell脚本开发的. 可以方便的管理 多个java环境版本. jenv安装 git clone https://gitee.com/tekintian/jenv.git ~/.jenv jenv环境配置 将下面的代码加入都你的 ~/.bash_profil…

堆垛机知识介绍:附图

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件是关于堆垛机的介绍&#xff0c;内容包括堆垛机的概念、分类、工作原理、结构…

Vue(九) 全局事件总线、Todo案例应用全局事件总线、消息订阅与发布、Todo案例应用消息订阅、编辑Item、$nextTick

文章目录 一、全局事件总线 (GlobalEventBus)1. 总线前言2. 安装全局事件总线3. 使用总线事件4. 解绑总线事件 二、Todo案例应用全局事件总线三、消息订阅与发布1. 前言2. 使用步骤 四、Todo案例应用消息订阅五、Todo案例编辑Item六、$nextTick修改后的Todo完整代码 一、全局事…

【负载均衡】LoadBalance场景演示

服务端⾼并发分布式结构演进之路-CSDN博客文章浏览阅读976次&#xff0c;点赞11次&#xff0c;收藏9次。在进行技术学习过程中&#xff0c;由于大部分读者没有经历过一些中大型系统的实际经验&#xff0c;导致无法从服务端⾼并发分布式结构演进之路-----在进行技术学习过程中&a…

低代码技术:简化应用开发,推动数字化转型

在当今快速变化的技术环境中&#xff0c;企业面临着巨大的压力&#xff0c;需要快速响应市场需求并持续推动数字化转型。传统的应用开发方式往往复杂且耗时&#xff0c;开发周期长且需要大量的编程工作。为了应对这些挑战&#xff0c;低代码技术应运而生&#xff0c;为企业提供…

谈谈人工智能在中国:现状与未来展望

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经成为推动全球经济和社会发展的关键力量。作为全球科技创新的重要参与者&#xff0c;中国在AI领域取得了令人瞩目的进展&#xff0c;并展现出强大的未来发展潜力。本文将深入分析中国AI的现状&#xff0c;…

XML简介 xml配置文件和properties配置文件对比

目录标题 一、XML简介二、XML配置文件和properties配置文件对比三、XML约束 一、XML简介 XML是EXtensible Markup Language的缩写&#xff0c;翻译过来就是可扩展标记语言。所以很明显&#xff0c;XML和HTML一样都是标记语言&#xff0c;也就是说它们的基本语法都是标签。 可…

windows下安装docker操作步骤

因为最近dockerb被封&#xff0c;下载资源太不方便了&#xff0c;所以还是自己本地安装上docker吧 下载的地址一定不要找错&#xff0c;是这里 https://docs.docker.com/desktop/install/windows-install/ 电脑--“控制面板”--“程序与功能”--开启windows功能 “Hyper-V”…

webSocket的自学案例

问&#xff1a; 请展示一个简单websocket案例&#xff1f; 回答&#xff1a; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>简单小例子</title></head><body><input type&quo…

记录游戏高光时刻!4款电脑录屏工具分享

虽然之前也录制过游戏&#xff0c;但是想来还是有不少朋友不知道如何录制一个高清游戏视频&#xff0c;我来和大家聊聊游戏直播和录屏的那些事儿。作为一个游戏主播&#xff0c;我尝试过很多录屏软件&#xff0c;今天就来分享一下我用过的四款录屏软件它们在录制游戏视频时的表…

Win32设备I/O详解

Windows设备 在Windows平台下&#xff0c;设备被定义为能够与之进行通信的任何东西。最常见的 I/O 设备包括&#xff1a;文件、文件流、目录、物理磁盘、卷、控制台缓冲区、磁带驱动器、通信资源、mailslot 和管道等。 平常我们使用的文件&#xff0c;目录都可以称之为设备。…