我在一个网站中使用JPA。在探索了保存数据的选项后,我发现了两种方法。第一种方法是使用javax.persistence.EntityManager的实现。我使用LocalContainerEntityManagerFactoryBean实例化了EntityManager的一个实例。一旦我获得了一个EntityManager的实例,我就可以用它来保存一个实体。例如,
entityManager.merge(someEntity);
另一种选择是使用org.springframework.data.repository.CrudRepository.的实例首先,我获得了一个CrudRepository的实例,我可以用它来保存一个实体。例如,
aCrudRepository.save(someEntity);
使用EntityManager和CrudRepository将实体持久化到数据库中有什么区别?这两种方法(实体管理器与crud存储库)的优点或缺点是什么?
发布于 2013-01-31 16:58:13
这两个界面提供了两种不同的方法:
org.springframework.data.repository.CrudRepository
是存储库的公共接口,它提供了与持久性上下文相关联的CRUD operations.javax.persistence.EntityManager
。Spring有自己的接口,该接口扩展了CrudRepository
,称为JpaRepository
。我希望你知道持久化API的优点或缺点。如果你不知道,你可以阅读this question的答案。
发布于 2019-05-30 00:33:18
在Java/Spring中有几个处理持久数据的层:
EntityManager
)Repository
)每一种抽象都保护了开发人员不受底层细节的影响,但它也会带来其自身的复杂性。JdbcTemplate是普通JDBC之上的一种精简抽象。Repository
是EntityManager
之上的一种抽象。它为开发人员屏蔽了EntityManager
引入的一些复杂细节,并添加了样板代码和许多方便的方法。
例如,CrudRepository
添加了findAll()
的实现,这是非常常见的,因此预定义它是有意义的。存储库有许多方便的方法,用于从方法名称(约定优于配置)、从实体本身(按示例查询)生成查询。它们允许通过查询DSL和/或启用动态投影来使用漂亮的类型安全流畅API。
https://stackoverflow.com/questions/14621495
复制相似问题