当前位置: 首页 > 知识库问答 >
问题:

Spring数据仓库和DAO Java泛型

单于骁
2023-03-14

阅读有关在DAO层中使用Java泛型的信息,我怀疑将其应用于spring数据存储库。我的意思是,使用 spring 数据存储库,你有这样的东西:

  public interface OrderRepository extends CrudRepository<Order,OrderPK>{

  }

但是如果我有其他10个实体,我必须创建10个类似于上面的接口来执行CRUD操作等等,我认为这不是很可扩展的。Java Generics和DAO是关于创建一个接口和一个实现,并将其用于实体,但使用Spring数据存储库,我必须为每个实体创建一个界面,因此。。。

共有1个答案

裴良弼
2023-03-14

你并没有真正提出问题,所以我只是补充

真的是这样吗?如果是,为什么?

并回答它:

> 是的,这(几乎)是正确的。几乎是,因为您不应该为每个实体创建一个存储库,而应该为每个聚合根创建一个存储库。参见http://static.olivergierke.de/lectures/ddd-and-spring/

Spring数据存储库提供了各种特性,Spring数据需要知道这些特性,它正在处理什么实体。例如,查询方法需要知道实体的属性,以便将方法名转换为基于JPA的查询。因此,您必须在某个时候将信息传递给Spring Data,还必须传递信息,哪些实体应该被视为聚合根。实现这一点的方法是指定接口。

你真的需要那个吗?好吧,如果您想要的只是通用的 Crud 功能,您可以使用 JPA 直接开箱即用。但是,如果你想要查询方法,分页,简单的本机查询等等,Spring Data是避免大量样板代码的好方法。

(请记住,我有偏见)

 类似资料:
  • 我正在努力让Spring JPA Data为我工作,但一直在努力。问题出在这里。 我有两个域类,它们之间有一个简单的一对多关系: 我已经为每个类设置了存储库接口:CardRepository,扩展JpaRepository的用户存储库,两个存储库都注入到服务中 非常基本的设置。someMethod() 出现问题,其中我用它的标识符查询了一个用户,然后尝试获取映射@OneToMany的列表,然后发生

  • 在使用Spring数据存储库时发现一些奇怪的行为。 我写了这些类和接口: 当我尝试测试UserRepositoryImpl时,java。lang.StackOverflowerr被抛出 我发现save()方法存在一些问题。此外,delete()方法会引发stackoverflow。 我已经找到了解决办法。当我更改将存储库接口扩展为(例如)JpaUserRepository的接口的名称时,我的问题就

  • 主要内容:1.ETL,2.ELT,3.ELT的演变,4.ELT的工作原理,5.什么时候我们选择ELT,6.数据湖是不是很好的ELT落脚点,7.总结ETL 和 ELT 有很多共同点,从本质上讲,每种集成方法都可以将数据从源端抽取到数据仓库中,两者的区别在于数据在哪里进行转换 1.ETL ETL - 抽取、转换、加载 从不同的数据源抽取信息,将其转换为根据业务定义的格式,然后将其加载到其他数据库或数据仓库中。另一种 ETL 集成方法是反向 ETL,它将结构化数据从数据仓库中加载到业务数据库中,如我们

  • 我使用的是spring boot 1.5.2和spring boot数据redis 1.8。 我有两个@Id注释,一个用于JPA,另一个用于redis哈希。这里我想使用由mysql主键自动增量生成的JPA@Id值。 但我发现每次使用redis@Id注释时,redis中我的Id都会是另一个随机值,但我想使用mysql主键。 我的实体是这样的: 我的服务是这样的: 我得到了以下错误: redis的数据

  • 主要内容:1.离线数仓,2.Lambda架构,3.Kappa架构,4.Smack架构,5.湖仓一体传统数仓 离线数仓 实时数仓 Lambda架构 Kappa架构 Smack架构 数据湖架构 仓湖一体架构 1.离线数仓 2.Lambda架构 Lambda架构是大数据平台里最成熟、最稳定的架构,它的核心思想是:将批处理作业和实时流处理作业分离,各自独立运行,资源互相隔离。 (1)Batch Laye:主要负责所有的批处理操作,支撑该层的技术以Hive、Spark-SQL或MapReduce这类批处

  • 本文向大家介绍数据仓库和运营数据库之间的区别,包括了数据仓库和运营数据库之间的区别的使用技巧和注意事项,需要的朋友参考一下 数据仓库是用于结构化,经过过滤的数据的存储库,该数据已针对特定目的进行了处理。数据软件从多个来源收集数据,并使用ETL流程转换数据,然后将其加载到数据仓库中以用于业务目的。 运营数据库是那些数据经常更改的数据库。它们主要设计用于大量数据交易。它们是数据仓库的源数据库,用于维护