当前位置: 首页 > news >正文

ORM框架Java持久化层使用手册(mybatis,mybatisplus,jpa等)

一、ORM框架(主流选择)

ORM框架是Java持久化的绝对主流,它们将关系型数据库的表记录映射成Java对象,让开发者能够以面向对象的方式操作数据库。

1. JPA(Java Persistence API)

JPA本身是一套标准规范,而不是具体的实现。它定义了如何通过注解或XML来描述对象和关系型数据库的映射关系。主要的实现提供商有Hibernate、EclipseLink等。

  • 核心思想:约定优于配置,使用注解(如 @Entity, @Table, @Id)进行映射。
  • 优点
    • 标准化:作为Java EE/Jakarta EE标准,代码可移植性强,可以轻松更换底层实现。
    • 开发效率高:通过方法名生成查询(Derived Query)、Criteria API等,减少了大量SQL编写。
    • 面向对象:完全符合Java开发者的思维模式。
  • 常用实现
    • Hibernate:最流行、功能最全的JPA实现。提供了缓存、延迟加载、多种主键生成策略等强大功能。
    • EclipseLink:JPA标准的另一个重要实现,源自Oracle,在某些场景下性能有优势。
    • Spring Data JPA它不是JPA的实现,而是基于JPA(默认使用Hibernate)的更高层次的抽象和封装。它极大地简化了DAO层的开发,通过继承JpaRepository接口就能获得大部分CRUD方法,是Spring项目中的首选。
2. MyBatis

MyBatis是一个半自动化的持久层框架,它封装了JDBC,但将SQL的控制权完全交给了开发者。

  • 核心思想:SQL与Java代码分离,通过XML或注解来配置和映射SQL。
  • 优点
    • 灵活性强:对于复杂、高度优化的SQL查询,MyBatis具有绝对优势。开发者可以编写任意复杂的SQL来应对复杂业务场景。
    • 学习曲线平缓:对于熟悉SQL的开发者来说非常容易上手。
    • 性能可控:由于SQL由开发者编写,可以对其进行精细优化。
  • 缺点
    • 工作量较大:需要手动编写所有SQL和结果映射。
    • 数据库耦合度高:切换数据库时,可能需要修改特定的SQL语法。

JPA vs. MyBatis 如何选择?

  • 选择JPA(Spring Data JPA):如果业务模型相对标准,以CRUD操作为主,追求快速开发和代码的整洁性。
  • 选择MyBatis:如果项目涉及大量复杂查询、报表生成,或需要对SQL进行极致优化,或者团队对SQL非常熟悉。
2.1mybatis使用

主要使用在SSM框架中,依赖xml文件中进行sql的编写。每一个操作数据库的sql要和

3. MyBatis-Plus

这是在MyBatis基础上进行的增强工具,在保留MyBatis所有灵活性的前提下,内置了通用Mapper、通用Service、分页插件、代码生成器等强大功能。

  • 优点:既拥有了MyBatis的灵活性,又获得了类似JPA的快速CRUD能力,是很多项目的折中优选。

二、响应式持久化框架

随着响应式编程的兴起,为了与WebFlux等响应式Web框架无缝集成,出现了支持响应式流的数据库驱动和框架。

  • Spring Data R2DBC:相当于响应式版本的Spring Data JPA,但它不是ORM框架,不提供缓存、延迟加载等高级特性。它基于R2DBC(响应式关系型数据库连接)驱动,提供非阻塞的数据库访问。
  • Vert.x Reactive PostgreSQL/MySQL Client:Vert.x框架提供的响应式数据库客户端。

三、纯JDBC

  • Java Database Connectivity (JDBC):是Java访问数据库的最底层API。所有上述框架最终都是通过JDBC与数据库交互。
  • 使用场景:现在很少直接在新项目中使用,因为代码非常繁琐、重复且容易出错。但在一些性能要求极高或框架无法满足的特殊场景下,仍会直接使用。

总结与选型建议

框架/技术类型优点缺点适用场景
Spring Data JPAORM(标准封装)开发效率极高、标准化、面向对象复杂SQL处理稍弱,黑盒性较强标准CRUD应用、快速开发、微服务
HibernateORM(实现)功能全面、强大、社区成熟配置复杂、学习曲线较陡复杂对象关系映射、企业级应用
MyBatis半自动化ORMSQL灵活可控、性能优化方便需手动编写SQL、工作量大复杂查询、报表系统、遗留数据库
MyBatis-PlusMyBatis增强兼具MyBatis灵活和JPA便捷是MyBatis的扩展,非标准希望平衡灵活性和效率的项目
Spring JdbcTemplate轻量级工具简单、轻量、避免JDBC繁琐需手动写SQL和映射小型项目、对SQL有简单封装的场景
JOOQSQL DSL类型安全、SQL表达力强商业许可(部分功能)喜欢SQL且需要类型安全的项目

当前趋势:

  • 对于大多数新的Spring Boot项目,Spring Data JPA 是默认的首选,因为它开发效率最高。
  • 对于有复杂查询或对SQL有严格性能要求的项目,MyBatisMyBatis-Plus 是更受欢迎的选择。
  • 响应式项目则选择 Spring Data R2DBC
http://www.dtcms.com/a/406960.html

相关文章:

  • 大型企业网站建设方案seo排名优化软件有用
  • 数据驱动下的高维数据破局术:降维处理的技术实战、选型指南与方法论沉淀
  • Java按顺序提取Word内容(文本+数学公式)
  • Python快速入门专业版(四十五):Python类的属性:实例属性、类属性与属性访问控制(封装特性)
  • 软考~系统规划与管理师考试——论文—— IT 服务监督管理专题 —— 范文
  • 深度解析社区运营中的技术实践:从数据驱动到智能优化的全面探索
  • 虚拟主机WordPress建站苏州网站建设如何选择
  • hello算法笔记 03
  • 沂水网站开发付钱做编程题目的网站
  • C++笔记(基础)string基础
  • 雨晨Win11PE_25H2_26200.6588紧急维护系统
  • 【鸿蒙心迹】摸蓝图,打地基
  • 小型教育网站的开发建设开题报告建设网咨询
  • 二级网站建设情况说明汕尾网站网站建设
  • 从零起步学习Redis || 第二章:Redis中数据类型的深层剖析讲解(下)
  • C++设计模式_创建型模式_原型模式Prototype
  • 简单直播TV1.4.3 | 一个软件观看四大平台,免去多应用切换烦恼
  • 设计模式-3D引擎中的设计模式
  • Linux安装配置Redis 7.2.3教程
  • 山西省城乡住房建设厅网站网站建设需要多少钱小江
  • 网站建设背景需要写些什么考研哪个培训机构比较好
  • JavaEE 初阶第二十五期:IP协议,网络世界的 “身份通行证”(一)
  • 有一个做炫舞官网活动的网站企业邮箱注册申请126
  • 服务器跨域问题CORS的解决
  • MyBatis进行级联查询
  • MySQL8.0.26-Linux版安装
  • 济南网站建设_美叶网络网址域名查询
  • 深入了解linux网络—— UDP网络通信
  • 招商加盟的网站应该怎么做宝坻做网站哪家好
  • 视频网站开发工具网站备案中是什么意思