首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring实体管理器和Spring数据存储库有什么不同?

Spring实体管理器和Spring数据存储库有什么不同?
EN

Stack Overflow用户
提问于 2013-01-31 16:36:49
回答 2查看 23.6K关注 0票数 49

我在一个网站中使用JPA。在探索了保存数据的选项后,我发现了两种方法。第一种方法是使用javax.persistence.EntityManager的实现。我使用LocalContainerEntityManagerFactoryBean实例化了EntityManager的一个实例。一旦我获得了一个EntityManager的实例,我就可以用它来保存一个实体。例如,

entityManager.merge(someEntity);

另一种选择是使用org.springframework.data.repository.CrudRepository.的实例首先,我获得了一个CrudRepository的实例,我可以用它来保存一个实体。例如,

aCrudRepository.save(someEntity);

使用EntityManager和CrudRepository将实体持久化到数据库中有什么区别?这两种方法(实体管理器与crud存储库)的优点或缺点是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-31 16:58:13

这两个界面提供了两种不同的方法:

  • org.springframework.data.repository.CrudRepository是存储库的公共接口,它提供了与持久性上下文相关联的CRUD operations.
  • javax.persistence.EntityManager。Spring有自己的接口,该接口扩展了CrudRepository,称为JpaRepository

我希望你知道持久化API的优点或缺点。如果你不知道,你可以阅读this question的答案。

票数 31
EN

Stack Overflow用户

发布于 2019-05-30 00:33:18

在Java/Spring中有几个处理持久数据的层:

  • JDBC
  • JdbcTemplate
  • JPA (包含EntityManager)
  • Spring数据JPA (包含Repository)

每一种抽象都保护了开发人员不受底层细节的影响,但它也会带来其自身的复杂性。JdbcTemplate是普通JDBC之上的一种精简抽象。RepositoryEntityManager之上的一种抽象。它为开发人员屏蔽了EntityManager引入的一些复杂细节,并添加了样板代码和许多方便的方法。

例如,CrudRepository添加了findAll()的实现,这是非常常见的,因此预定义它是有意义的。存储库有许多方便的方法,用于从方法名称(约定优于配置)、从实体本身(按示例查询)生成查询。它们允许通过查询DSL和/或启用动态投影来使用漂亮的类型安全流畅API。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14621495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档