【Spring Data】

发布于:2025-03-13 ⋅ 阅读:(13) ⋅ 点赞:(0)

Spring Data

概述

Spring Data 是 Spring 框架的一个子项目,旨在简化与各种数据存储技术(如关系型数据库、NoSQL数据库、图数据库等)的集成和操作。它提供了一种统一的编程模型和API,使开发人员能够以一致的方式访问和操作不同类型的数据存储。Spring Data 通过提供通用的 CRUD 操作、查询方法、事务管理和数据访问抽象层等功能,简化了数据访问层的开发工作。它还提供了与 Spring 框架其他模块(如Spring Boot、Spring MVC等)的无缝集成,使开发人员能够更轻松地构建全栈应用程序。

Spring Data作为Spring框架的一个子项目,提供了多个模块用于简化和标准化对不同数据源的访问。

  1. Spring Data Commons:这是Spring Data的核心模块,提供了通用的API和查询机制,用于处理数据访问和持久化的通用问题。它包括一些基本接口和类,例如Repository和QuerydslPredicateExecutor,用于定义和执行查询以及处理数据的增删改查操作。

  2. Spring Data JPA:这个模块构建在Spring Data Commons之上,集成了JPA(Java Persistence API)规范,使开发人员能够更方便地使用JPA进行对象关系映射(ORM)。它提供了一些便利的功能,如自动生成基本的CRUD(Create、Retrieve、Update、Delete)方法,支持动态查询和分页查询等。

  3. Spring Data MongoDB:这个模块提供了对MongoDB数据库的支持,通过集成MongoDB的Java驱动程序,简化了与MongoDB的交互。它提供了与MongoDB的连接管理、文档映射、查询和索引等相关的功能。

  4. Spring Data Redis:这个模块提供了对Redis内存数据库的支持,通过集成Jedis或Lettuce等Redis客户端库,简化了与Redis的交互。它提供了对常见的Redis数据结构(如String、List、Set、SortedSet和Hash等)的操作方法,以及对Redis事务和分布式锁的支持。

  5. Spring Data JDBC: 这个模块提供了对关系型数据库的支持,通过简单的注解方式,将Java对象映射到关系型数据库表中。它提供了通过类似于SQL的查询语言对数据库进行查询的能力,并支持基本的CRUD操作。

此外,Spring Data还提供了其他一些模块,如Spring Data Couchbase、Spring Data Cassandra、Spring Data Neo4j等,用于支持其他流行的NoSQL数据库和图数据库的访问。开发人员可以根据自己的需求选择适合的模块来进行开发。

相关问题

spring data jpa那么好用,代码量还少,为什么还有那么多人用mybatis?

国人喜欢Mybatis的原因

总结起来,有如下原因:

1.大厂带节奏

国内做互联网的Java程序很多都是拷贝阿里的,阿里一开始用例iBatis(日本韩国是怎么回事呢)。大量的老系统都是基于iBatis/MyBatis的,市场上对MyBatis熟悉的人才更多,招聘和培训更容易,有的青年程序员以为“MyBatis早已统一全球了”就是一个很好的证明。

2.简单,学习成本低

小公司需要大量入门级的程序员,像大神甚至一个都请不起,请问大神们那些牛b框架哪个更快让菜鸟们上手,降低公司学习成本。注意这个成本会一直跟随公司,想必大神们创业直接前后端分离了,毕竟钱嘛多的是。

3.对于复杂性需求的灵活性高

国内绝大部分项目都是面向表结构编程的,把java对象仅当成数据容器,查询和模型变更都设计在一张表上,所谓业务逻辑就是一堆增删改查的sql集合,当然用mybatis方便。在逻辑不复杂,或者你判断软件生命周期不会超过一年的时候,直接用表结构编程是最方便快捷的。

国内普遍都是分布式,流量和性能决定了需要经常进行优化,而是用Mybatis对复杂需求的优化很方便。

4.政治环境

国内好多项目都是应付领导的某些奇葩需求。需要面向领导编程。一大半时间其实都是在解决领导的需求。国内项目需要大量报表统计(看看帆软卖的这么好就知道了),需要提供给领导作为决策。看到这里,各位领导不要骂我 ,真的不是黑领导的。

5.Hibernate学习成本高

虽然,实际上SpringDataJPA是非常简单的,但是,但是,JPA/Hibernate后期调试跟踪问题很麻烦,改起来也麻烦。别忘了,牛逼如你的人全公司甚至一个都没。还有什么缓存什么Criteria什么Lazy,虽然这些你学了也不见得能用上,但一个框架,你不学还是不行的。而且,JPA对于增删改很方便,复杂查询却是软肋,有同学会说,JPA也能写SQL语句啊,我想说的是,既然都用orm了,你再写sql,那不就失去了oop的内涵了吗?不优雅好吧。