百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

JAP简易教程之概述.md

liuian 2025-04-27 14:46 68 浏览

最近自己变的有点懒惰了,开始进入学习状态吧! 要开始讲一期了,但是同时也要学点新的知识!

对JPA没有过系统的学习,从今天开始更新JPA的教程吧!

可能会断档,但是会坚持

JPA 是什么

Java Persistence API:用于对象持久化的 API

Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层

JPA和Hibernate的关系

  • JPA 是 hibernate 的一个抽象(就像JDBC和JDBC驱动的关系):

    • JPA 是规范:JPA 本质上就是一种 ORM 规范,不是ORM 框架 —— 因为 JPA 并未提供 ORM 实现,它只是制订了一些规范,提供了一些编程的 API 接口,但具体实现则由 ORM 厂商提供实现

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

  • 从功能上来说, JPA 是 Hibernate 功能的一个子集

JPA 的供应商

  • JPA 的目标之一是制定一个可以由很多供应商实现的 API,目前Hibernate 3.2+、TopLink 10.1+ 以及 OpenJPA 都提供了 JPA 的实现

    • TopLink 以前需要收费,如今开源了

    • OpenJPA 是 Apache 组织提供的开源项目

    • JPA 的始作俑者就是 Hibernate 的作者

    • Hibernate 从 3.2 开始兼容 JPA

    • Hibernate

    • OpenJPA

    • TopLink

    JPA的优势

    标准化: 提供相同的 API,这保证了基于JPA 开发的企业应用能够经过少量的修改就能够在不同的 JPA 框架下运行。

    简单易用,集成方便: JPA 的主要目标之一就是提供更加简单的编程模型,在 JPA 框架下创建实体和创建 Java 类一样简单,只需要使用 javax.persistence.Entity 进行注释;JPA 的框架和接口也都非常简单,

    可媲美JDBC的查询能力: JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。

    支持面向对象的高级特性: JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型

    JPA 包括 3方面的技术

    • ORM 映射元数据:JPA 支持XMLJDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。

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

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

    相关推荐

    eino v0.4.5版本深度解析:接口类型处理优化与错误机制全面升级

    近日,eino框架发布了v0.4.5版本,该版本在错误处理、类型安全、流处理机制以及代理配置注释等方面进行了多项优化与修复。本次更新共包含6个提交,涉及10个文件的修改,由2位贡献者共同完成。本文将详...

    SpringBoot异常处理_springboot异常注解

    在SpringBoot中,异常处理是构建健壮、可维护Web应用的关键部分。良好的异常处理机制可以统一返回格式、提升用户体验、便于调试和监控。以下是SpringBoot中处理异常的完整指...

    Jenkins运维之路(Jenkins流水线改造Day02-1-容器项目)

    这回对线上容器服务器的流水线进行了一定的改造来满足目前线上的需求,还是会将所有的自动化脚本都放置到代码库中统一管理,我感觉一章不一定写的完,所以先给标题加了个-1,话不多说开干1.本次流水线的流程设计...

    告别宕机!零基础搭建服务器监控告警系统!小白也能学会!

    前言本文将带你从零开始,一步步搭建一个完整的服务器指标监控与邮件告警系统,使用的技术栈均为业界主流、稳定可靠的开源工具:Prometheus:云原生时代的监控王者,擅长指标采集与告警规则定义Node_...

    httprunner实战接口测试笔记,拿走不谢

    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试码同学抖音号:小码哥聊软件测试01开始安装跟创建项目pipinstallhttprunne...

    基于JMeter的性能压测平台实现_jmeter压测方案

    这篇文章已经是两年前写的,短短两年时间,JMeter开源应用技术的发展已经是翻天覆地,最初由github开源项目zyanycall/stressTestPlatform形成的这款测试工具也开始慢...

    12K+ Star!新一代的开源持续测试工具!

    大家好,我是Java陈序员。在企业软件研发的持续交付流程中,测试环节往往是影响效率的关键瓶颈,用例管理混乱、接口调试复杂、团队协作不畅、与DevOps流程脱节等问题都能影响软件交付。今天,给大家...

    Spring Boot3 中分库分表之后如何合并查询

    在当今互联网应用飞速发展的时代,数据量呈爆发式增长。对于互联网软件开发人员而言,如何高效管理和查询海量数据成为了一项关键挑战。分库分表技术应运而生,它能有效缓解单库单表数据量过大带来的性能瓶颈。而在...

    离线在docker镜像方式部署ragflow0.17.2

    经常项目上会出现不能连外网的情况,要怎么使用ragflow镜像部署呢,这里提供详细的步骤。1、下载基础镜像根据docker-compose-base.yml及docker-compose.yml中的i...

    看,教你手写一个最简单的SpringBoot Starter

    何为Starter?想必大家都使用过SpringBoot,在SpringBoot项目中,使用最多的无非就是各种各样的Starter了。那何为Starter呢?你可以理解为一个可拔插式...

    《群星stellaris》军事基地跳出怎么办?解决方法一览

    《群星stellaris》军事基地跳出情况有些小伙伴出现过这种情况,究竟该怎么解决呢?玩家“gmjdadk”分享的自己的解决方法,看看能不能解决。我用英文原版、德语、法语和俄语四个版本对比了一下,结果...

    数据开发工具dbt手拉手教程-03.定义数据源模型

    本章节介绍在dbt项目中,如何定义数据源模型。定义并引入数据源通过Extract和Load方式加载到仓库中的数据,可以使用dbt中的sources组件进行定义和描述。通过在dbt中将这些数据集(表)声...

    docker compose 常用命令手册_docker-compose init

    以下是DockerCompose常用命令手册,按生命周期管理、服务运维、构建配置、扩缩容、调试工具分类,附带参数解析、示例和关键说明,覆盖多容器编排核心场景:一、生命周期管理(核心命令...

    RagFlow与DeepSeek R1本地知识库搭建详细步骤及代码实现

    一、环境准备硬件要求独立显卡(建议NVIDIAGPU,8GB显存以上)内存16GB以上,推荐32GB(处理大规模文档时更高效)SSD硬盘(加速文档解析与检索)软件安装bash#必装组件Docker...

    Docker Compose 配置更新指南_docker-compose配置

    高效管理容器配置变更的最佳实践方法重启范围保留数据卷适用场景docker-composeup-d变更的服务常规配置更新--force-recreate指定/所有服务强制重建down→up流程...