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

了解Spring数据接口

呼延德华
2023-03-14

我对一些基本的Spring数据概念有点困惑。

据我所知,典型的DAO级别结构如下所示:

   - dao
     - MyFirstObjectDao
     - MySecondObjectDao
     - jpa
        - MyFirstObjectDaoImpl
     - jdbc
        - MySecondObjectDaoImpl

有了这个概念,我可以使用JPA作为第一个DAO接口的实现,使用JDBC作为第二个DAO接口的实现。

现在我想了解Spring存储库抽象。每个Spring Data tutorial都指定,我应该有一个接口,例如,该接口应该从JPararePository扩展。所以有了这个接口,我已经用JPA锁定了,对吧?

如果我想提供不同的实现,比如DAO中的JPA/JDBC呢?

共有1个答案

韦寒
2023-03-14

通常没有一个很好的理由想要为相同的对象混合JPA和JDBC持久性;如果您已经将所有内容注释为JPA实体,那么您不妨在任何地方都使用相同的持久性设置。你应该重新考虑你为什么要这么做。

这就是说,如果确实需要,您可以这样做:

interface FooBaseRepository extends PagingAndSortingRepository<Long, Foo> {}
interface FooJpaRepository extends FooBaseRepository, JpaRepository<Long, Foo> {}
interface FooJdbcRepository extends FooBaseRepository, JdbcRepository<Long, Foo> {}

@Autowired FooBaseRepository surpriseRepository

更新:如果您只是在讨论为不同的类(没有关系的类)使用不同的持久性策略,那么没有什么特别复杂的。您可以混合JPAJDBC存储库;它们只是界面。

 类似资料:
  • 问题内容: 在阅读Spring Data文档时,我多次遇到该界面。 引用文档: 如果您按原样使用通过接口使用Spring命名空间的自动存储库接口检测,将导致Spring尝试创建MyRepository实例。当然这是不希望的,因为它仅充当存储库和您要为每个实体定义的实际存储库接口之间的中介。要排除扩展存储库的接口被实例化为存储库实例,请使用注释。 但是,我仍然不确定何时何地使用它。有人可以建议并给我

  • 从数据集和RDD文档中, 数据集: 数据集是特定领域对象的强类型集合,可以使用函数或关系操作并行转换。每个数据集还有一个称为DataFrame的无类型视图,它是行数据集 RDD: RDD表示可以并行操作的不可变、分区的元素集合 此外,据说它们之间的区别是: 主要区别在于,dataset是特定于域的对象的集合,而RDD是任何对象的集合。定义的域对象部分表示数据集的架构部分。所以,数据集API总是强类

  • 问题内容: 我正在运行一个使用c3p0作为连接池的Spring / Hibernate连接到MySQL安装程序。出于某些奇怪的原因,当系统处于负载状态时(当然),它用尽了连接。 该网站相当稳定,直到我们开始达到新的流量水平(并发用户超过100个)。届时,DB将会崩溃(与CPU挂钩)。我的第一个动作是在应用程序中通过广泛的缓存和查询优化等来提高性能。 现在,它会间歇性地耗尽连接。似乎甚至都不依赖于负

  • 问题内容: 摘要:这不起作用: 但是这样做: 为什么? 再生产: 这不起作用: 但是这样做: 链接到笔记本 我的问题是: 为什么只有第二种方式起作用?我似乎看不到选择/索引逻辑的差异。 版本是0.10.0 编辑:这不应该再这样了。从0.11版开始,提供。参见此处:http : //pandas.pydata.org/pandas- docs/stable/indexing.html 问题答案: 大

  • 控制器: Wed Jun 20 20:42:53 EEST 2018出现意外错误(Type=内部服务器错误,Status=500)。模板分析过程中出错(模板:“class path resource[templates/result.html]”)

  • 我使用Spring-Data-Jpa并使用@Lock注释(悲观_写)来获取数据库(Oracle)锁。我需要帮助来了解以下场景是否会导致数据库死锁。 事务1(PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT)将数据库锁定在say教师表上(说锁定在id=1的行上)。它试图在子表中插入一条新记录,比如会议。教师表没有更新 当事务1正在进行时。事务2(PROPAGATI