![](/img/trans.png)
[英]What's the difference between @Repository and @RepositoryDefinition in Spring?
[英]What is the difference between an Spring Entity Manager and Spring Data Repository?
我在網站中使用 JPA。 在探索了保存數據的選項后,我找到了 2 種方法。 第一種方法是使用 javax.persistence.EntityManager 的實現。 我使用 LocalContainerEntityManagerFactoryBean 來實例化 EntityManager 的一個實例。 一旦我獲得了一個 EntityManager 的實例,我就可以用它來保存一個實體。 例如,
entityManager.merge(someEntity);
另一種選擇是使用 org.springframework.data.repository.CrudRepository 的實例。 一,我獲得了一個 CrudRepository 的實例,我可以用它來保存一個實體。 例如,
aCrudRepository.save(someEntity);
使用 EntityManager 和 CrudRepository 將實體持久化到數據庫中有什么區別? 這兩種方法(實體管理器與 crud 存儲庫)的優缺點是什么?
在 Java/Spring 中有幾個處理持久數據的層:
EntityManager
)Repository
) 每個抽象都使開發人員免受較低級別的細節的影響,但它也可能帶來其自身的復雜性。 JdbcTemplate 是對普通 JDBC 的一個瘦抽象。 Repository
是對EntityManager
的抽象。 它使開發人員免受EntityManager
引入的一些復雜細節的影響,並添加了樣板代碼和許多方便的方法。
例如, CrudRepository
添加了findAll()
的實現,它非常常見,預定義它是有意義的。 存儲庫有許多方便的方法來從方法名稱(約定優於配置)、實體本身(按示例查詢)生成查詢。 它們允許在 Query DSL 中使用漂亮的類型安全 Fluent API 和/或啟用動態投影。
這兩個接口提供了兩種不同的方法:
org.springframework.data.repository.CrudRepository
是提供 CRUD 操作的存儲庫的通用接口。javax.persistence.EntityManager
與持久化上下文相關聯。 JpaRepository
,Spring 有自己的接口,它擴展CrudRepository
稱為JpaRepository
。我希望您了解持久化 API 的優點或缺點。 如果你不這樣做,你可以閱讀這個問題的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.