Cơ sở dữ liệu hướng tài liệu là một trong những loại cơ sở dữ liệu NoSQL, lưu giữ thông tin dưới dạng kho lưu trữ khóa-giá trị. MongoDB là một chương trình cơ sở dữ liệu như vậy. Spring Data MongoDB, là một phần của dự án ô Spring Data lớn hơn, tạo điều kiện thuận lợi cho sự tương tác của các chương trình Java với cơ sở dữ liệu tài liệu MongoDB
Dữ liệu mùa xuân là một dự án ô chứa nhiều mô hình con, mỗi mô hình con cụ thể cho một cơ sở dữ liệu cụ thể. Trong bài viết này, chúng ta sẽ đề cập đến Spring Data MongoDB bằng cách xây dựng một ứng dụng lưu trữ và truy xuất dữ liệu từ MongoDB, một cơ sở dữ liệu NO-SQL dựa trên tài liệu
Nếu bạn muốn đọc thêm về Dữ liệu mùa xuân, chúng tôi đã trình bày chi tiết về nó trong - Hướng dẫn về Dữ liệu mùa xuân JPA
MongoDB
MongoDB là một cơ sở dữ liệu NoSQL hướng tài liệu lưu trữ các tài liệu giống như JSON với các lược đồ động. Nó thường được sử dụng để lưu trữ dữ liệu khối lượng lớn
Trước khi tiếp tục, bạn nên biết một số thuật ngữ cơ sở dữ liệu NoSQL. Xin lưu ý rằng các thuật ngữ này không chính xác là một đối một so với cơ sở dữ liệu SQL quan hệ
- cơ sở dữ liệu. Nó là nơi chứa các bộ sưu tập và có thể được coi là tương tự như cơ sở dữ liệu RDBMS, là nơi chứa các Bảng
- Bộ sưu tập. Nó tương đương với các Bảng trong RDBMS, nhưng không giống như một bộ sưu tập, nó có một lược đồ động. Một bộ sưu tập tồn tại trong cơ sở dữ liệu
- Tài liệu. Nó là một bản ghi duy nhất trong bộ sưu tập MongoDB. Nó có thể được coi là một hàng trong RDBMS
- Đồng ruộng. Một tài liệu không có hoặc nhiều trường. Nó giống như cột RDBMS có cặp khóa-giá trị
Để thiết lập máy chủ MongoDB trên máy cục bộ của bạn, bạn có thể tải xuống bản cài đặt tại đây tùy theo hệ điều hành của bạn. Sau đó, bạn cũng có thể tải xuống một công cụ như Compass để có GUI đẹp mắt để tương tác với máy chủ của mình
Một tùy chọn khác và tùy chọn mà chúng tôi sẽ sử dụng là MongoDB Atlas, đây là cơ sở dữ liệu đám mây dưới dạng dịch vụ. Sau khi bạn đăng ký, hãy đăng nhập và xây dựng một cụm bằng bậc miễn phí
Để kết nối với cụm của chúng tôi, chúng tôi phải tạo một người dùng
Bây giờ hãy tạo cơ sở dữ liệu và bộ sưu tập của chúng ta
Bây giờ chúng tôi được thiết lập để kết nối với bộ sưu tập của mình bằng ứng dụng Spring của chúng tôi
Dự án MongoDB dữ liệu mùa xuân
Thành lập
Cách tốt nhất để bắt đầu với một dự án khung là truy cập Spring Initializr. Chọn phiên bản Spring Boot ưa thích của bạn và thêm các phụ thuộc
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
0 và spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
1Sau này, hãy tạo nó dưới dạng dự án Maven và bạn đã sẵn sàng
Xác định một bộ sưu tập
Trước tiên, hãy xác định lớp mô hình bộ sưu tập
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
2 của chúng tôiBây giờ chúng ta hãy xem những chú thích này
- @Tài liệu. Điều này đánh dấu lớp là một đối tượng miền sẽ được lưu vào cơ sở dữ liệu. Tên bộ sưu tập mặc định được sử dụng là tên lớp [ký tự đầu tiên được viết thường]. Chúng ta có thể ánh xạ tới một bộ sưu tập khác trong cơ sở dữ liệu bằng cách sử dụng thuộc tính
3 của chú thíchspring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
- @ID. Điều này đánh dấu trường được sử dụng cho mục đích nhận dạng
- @Đã lập chỉ mục [duy nhất = đúng]. Điều này được áp dụng cho trường sẽ được lập chỉ mục với một ràng buộc là duy nhất
Xác định kho lưu trữ
Chúng tôi tạo một kho lưu trữ bằng cách tạo một giao diện
public interface CandidateRepository extends MongoRepository {}
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
4 mở rộng giao diện spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
5 và cắm vào kiểu dữ liệu của tài liệu mà chúng tôi đang làm việc, tôi. e spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
2 và spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
7 tương ứngĐiều này sẽ cung cấp cho chúng tôi quyền truy cập vào tất cả các hoạt động CRUD xung quanh bộ sưu tập MongoDB
Kết nối cập nhật
Để thiết lập một kết nối phù hợp, chúng ta cần xác định các thuộc tính kết nối trong
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
8spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
Bạn có thể lấy các giá trị này trực tiếp từ MongoDB Atlas UI
Ghi chú. Nếu mật khẩu của bạn chứa các ký tự đặc biệt thì nó phải được mã hóa URL
Theo mặc định, cụm của bạn được bảo mật để không nhận yêu cầu từ bất kỳ IP máy khách nào. Chúng tôi cần cho phép IP của mình có thể kết nối với cụm này thông qua Danh sách trắng IP
Xác định bộ điều khiển
Bây giờ, hãy sử dụng kho lưu trữ của chúng tôi trong
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
9 thông qua chú thích spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
20Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
2Thao tác CRUD đơn giản
ChènHãy tạo một ánh xạ
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
21 sẽ chèn dữ liệu vào MongoDB của chúng taspring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
5Chúng tôi đã sử dụng phương thức
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
22 trên đối tượng spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
23. Đối tượng spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
2 được chụp bởi spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
25 và được sử dụng trực tiếp trong phương thức spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
22Nếu chúng tôi cố gắng sử dụng lại cùng một ID email, chúng tôi sẽ gặp lỗi khóa trùng lặp
Chúng tôi cũng có thể kiểm tra trạng thái bộ sưu tập của mình trong Atlas
ĐọcHãy tạo một vài ánh xạ ________ 127 để lấy các bản ghi của chúng ta
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
2spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
28 sẽ trả về tất cả các bản ghi trong cơ sở dữ liệu của chúng tôi, trong khi phương thức spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
29 sẽ trả về một bản ghi duy nhất dựa trên ID được truyềnNếu bản ghi không xuất hiện, nó sẽ tạo ra một ngoại lệ thời gian chạy tùy chỉnh
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
50. spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
51 là một lớp tùy chỉnh trả về trạng thái spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
52 nếu nó bị némspring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
8Nếu bạn muốn đọc thêm về điều này, chúng tôi đã trình bày chi tiết trong - Xử lý ngoại lệ trong mùa xuân
Bây giờ để cập nhật một bản ghi cụ thể, chúng tôi sẽ sử dụng ánh xạ
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
53spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
0Trước tiên, chúng tôi kiểm tra xem
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
2 với spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
55 đã cho có mặt hay không. Nếu không, chúng tôi trả về trạng thái spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
52, nếu không, chúng tôi cập nhật toàn bộ đối tượng và lưu nó bằng phương thức spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
22Xóa bỏBây giờ, hãy xóa một bản ghi cụ thể bằng cách sử dụng ánh xạ ________ 158
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
6Chúng tôi đã sử dụng phương pháp
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
59 trên spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
23 để xóa mục nhậpPhương thức truy vấn tùy chỉnh
Chúng tôi có thể thêm một số phương thức vào
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
4 của mình để có một số chức năng bổ sung dựa trên yêu cầu kinh doanh của chúng tôipublic interface CandidateRepository extends MongoRepository {}
0Ở trên, chúng tôi đã thêm chức năng tìm kiếm dựa trên email và kinh nghiệm. Tất cả những gì chúng ta cần làm là tuân theo quy ước đặt tên do Spring Data đặt ra
Sau phương thức
spring.data.mongodb.uri=mongodb+srv://:@-/?retryWrites=true
22, chúng tôi viết tên của thuộc tính trong trường hợp lạc đà, theo sau là bất kỳ hạn chế nào khác mà chúng tôi có thể muốn thực thi. Các đối số của phương thức phải khớp với kỳ vọng của mệnh đề where. Dữ liệu mùa xuân sẽ tạo các truy vấn thực tế cho bạn trong quá trình khởi động ứng dụng bằng cách sử dụng giao diện nàyHãy sử dụng cái này trong bộ điều khiển của chúng ta
public interface CandidateRepository extends MongoRepository {}
2Sự kết luận
Trong bài viết này, chúng tôi đã giới thiệu cách sử dụng Spring Data MongoDB để kết nối với máy chủ MongoDB. Trước tiên, chúng tôi đã tạo một máy chủ MongoDB trên đám mây bằng MongoDB Atlas và sau đó sử dụng Dữ liệu mùa xuân để kết nối với nó. Sau đó, chúng tôi đã thực hiện một số thao tác CRUD đơn giản cũng như viết một số truy vấn tùy chỉnh