使用Spring Data建立只讀儲存庫 | Baeldung
在這個簡短的教程中,我們將討論如何建立一個只讀的Spring Data Repository。
有時有必要從資料庫中讀取資料而無需修改它(CQRS)。在這種情況下,擁有隻讀的Repository介面將是完美的。它將提供讀取資料的功能,而無需任何人更改它的風險。
讓我們從一個包含spring-boot-starter-data-jpa依賴項的Spring Boot專案開始:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.4.3</version> </dependency> |
Spring Data受歡迎的CrudRepository介面包含在此依賴項中,該介面提供了大多數應用程式所需的所有基本CRUD操作(建立,讀取,更新,刪除)的方法。但是,它包含幾種修改資料的方法,我們需要一個只能讀取資料的儲存庫。
CrudRepository實際上擴充套件了另一個稱為Repository的介面。我們還可以擴充套件此介面以滿足我們的需求。
讓我們建立一個擴充套件Repository的新介面:
@NoRepositoryBean public interface ReadOnlyRepository<T, ID> extends Repository<T, ID> { Optional<T> findById(ID id); List<T> findAll(); } |
在這裡,我們僅定義了兩個只讀方法。此儲存庫訪問的實體將不受任何修改的影響。
還必須注意,我們必須使用@NoRepositoryBean批註來告訴Spring我們希望該儲存庫保持通用性,這一點也很重要。這使我們可以根據需要將只讀儲存庫重用於許多不同的實體。
接下來,我們將看到如何將實體繫結到我們的新ReadOnlyRepository。
假設我們有一個簡單的Book實體,我們想訪問它:
@Entity public class Book { @Id @GeneratedValue private Long id; private String author; private String title; //getters and setters } |
現在我們有了一個可持久的實體,我們可以建立一個繼承自ReadOnlyRepository的儲存庫介面:
public interface BookReadOnlyRepository extends ReadOnlyRepository<Book, Long> { List<Book> findByAuthor(String author); List<Book> findByTitle(String title); } |
我們學習瞭如何擴充套件Spring Data的Repository介面,以建立可重用的只讀儲存庫。之後,我們將其繫結到一個簡單的Book實體,並編寫了一個測試,證明了其功能符合我們的預期。
與往常一樣,可以在GitHub上找到此程式碼的有效示例。
相關文章
- Nasruddin/elasticsearch-spring-boot-spring-data:使用Spring Data將Elasticsearch儲存庫與Springboot結合使用的入門示例ElasticsearchSpring Boot
- 只讀儲存器ROM
- PG 資料庫只讀使用者的建立。資料庫
- PostgreSQL建立只讀使用者SQL
- Oracle建立只讀使用者Oracle
- 【轉載】Vim儲存只讀模式下的修改模式
- 在伺服器建立 git 儲存庫伺服器Git
- 使用Hazelcast作為Spring資料儲存庫的開源案例ASTSpring
- Spring Boot:使用Redis儲存技術Spring BootRedis
- vim儲存只讀檔案時獲得sudo許可權
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- 如何在Spring Data MongoDB 中儲存和查詢動態欄位SpringMongoDB
- Spring整合Quartz案例使用RAM儲存方式Springquartz
- Spring整合Quartz案例使用JDBC儲存方式SpringquartzJDBC
- 使用Spring Data JPA進行資料庫操作Spring資料庫
- 使用 Spring Data RepositoriesSpring
- 儲存與索引------《Designing Data-Intensiv索引
- 使用OPA實現Spring安全授權 | baeldungSpring
- CQRS時是否使用儲存庫模式嗎?模式
- WordPress如何使用騰訊雲物件儲存COS儲存媒體庫附件物件
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- Streaming Data Warehouse 儲存:需求與架構架構
- Spring Data JPA 的使用Spring
- 使用 Spring Data Repositories(下)Spring
- java+pgsql實現儲存圖片到資料庫,以及讀取資料庫儲存的圖片JavaSQL資料庫
- 如何使用Spring Data進行一個實體中一部分資料的更新? | BaeldungSpring
- Synology群暉NAS儲存正確建立儲存池和儲存空間的方法
- Spring Cloud Config採用資料庫儲存配置內容SpringCloud資料庫
- 建立NFS型別的儲存NFS型別
- NAS中如何建立儲存池
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- 解讀記憶體資料庫的儲存需求RC記憶體資料庫
- Spring Data JPA簡單使用Spring
- Spring Data Redis Stream的使用SpringRedis
- kubernetes高階之建立只讀檔案系統以及只讀asp.net core容器ASP.NET
- 使用NAS動態儲存卷建立有狀態應用
- Spring Boot Reactor Netty配置 | BaeldungSpring BootReactNetty