Skip to content

4.2.3 Viết các interface repository cho MongoDB

Spring Data MongoDB cung cấp hỗ trợ repository tự động, tương tự như những gì Spring Data JPA và Spring Data Cassandra cung cấp.

Bạn sẽ bắt đầu bằng cách định nghĩa một repository để lưu trữ các đối tượng Ingredient dưới dạng tài liệu (documents). Như trước đây, bạn có thể viết IngredientRepository để kế thừa CrudRepository, như được minh họa dưới đây:

java
package tacos.data;

import org.springframework.data.repository.CrudRepository;

import tacos.Ingredient;

public interface IngredientRepository
      extends CrudRepository<Ingredient, String> {
}

Chờ đã! Trông giống hệt như interface IngredientRepository bạn đã viết trong mục 4.1 cho Cassandra! Thật vậy, đó là cùng một interface, không có thay đổi gì. Điều này làm nổi bật một trong những lợi ích của việc kế thừa CrudRepository — nó mang tính di động cao giữa các loại cơ sở dữ liệu khác nhau và hoạt động tốt với cả MongoDB lẫn Cassandra.

Tiếp theo là interface OrderRepository, bạn có thể thấy trong đoạn mã dưới đây rằng nó khá đơn giản:

java
package tacos.data;

import org.springframework.data.repository.CrudRepository;

import tacos.TacoOrder;

public interface OrderRepository
      extends CrudRepository<TacoOrder, String> {
}

Cũng giống như IngredientRepository, OrderRepository kế thừa CrudRepository để tận dụng các tối ưu hóa được cung cấp trong các phương thức insert(). Ngoài ra, repository này không có gì đặc biệt so với một số repository khác mà bạn đã định nghĩa cho đến nay. Tuy nhiên, lưu ý rằng tham số ID khi kế thừa CrudRepository giờ là String thay vì Long (như với JPA) hoặc UUID (như với Cassandra). Điều này phản ánh sự thay đổi mà chúng ta đã thực hiện trong TacoOrder để hỗ trợ việc gán ID tự động.

Cuối cùng, làm việc với Spring Data MongoDB không khác biệt quá nhiều so với các dự án Spring Data khác mà chúng ta đã làm việc cùng. Các kiểu domain được chú thích (annotate) khác nhau. Nhưng ngoài tham số ID được chỉ định khi kế thừa CrudRepository, các interface repository gần như giống hệt nhau.

Released under the MIT License.