JPA có hoạt động với MongoDB không?
Nếu bạn đã làm việc với Spring Data JPA trong một khoảng thời gian bất kỳ - có thể bạn đã quen thuộc với các phương thức truy vấn dẫn xuất Show
Chúng là một cách tiện lợi và nhanh chóng để giảm bớt gánh nặng viết truy vấn vào Spring Data JPA bằng cách chỉ cần xác định tên phương thức Trong tình huống giả định này - chúng ta đã định nghĩa một 6 cho một lớp 7, lớp này có một thuộc tính được gọi là 8 thuộc loại 9Lời nhắc nhở. 6 chỉ là một 1 chuyên dụng phù hợp với Mongo, đến lượt nó là một 2 chuyên biệtThay vì triển khai phương thức này trong một dịch vụ đang triển khai 3 - Spring Data JPA tạo một truy vấn tự động được cung cấp tên của phương thức. Nó sẽ tạo một truy vấn trả về danh sách tất cả các bản ghi 7, với một bản ghi phù hợp là 8Khi phương thức được gọi với một số đầu vào, yêu cầu sau được thực hiện
Ghi chú. Để xem kết quả này, bạn sẽ phải đặt mức sửa lỗi từ 6 thành 7
Tuy nhiên, chúng trở nên rất khó tạo khi yêu cầu các truy vấn phức tạp.
Và đây chỉ là hai tham số. Điều gì xảy ra khi bạn muốn tạo truy vấn cho 5 tham số?
Đây là điểm mà rất có thể bạn sẽ muốn viết các truy vấn của riêng mình. Điều này có thể thực hiện được thông qua chú thích 8
Khi phương thức chú thích được gọi - truy vấn từ bên trong chú thích 8 kích hoạt và trả về kết quảGhi chú. Hướng dẫn này sẽ đề cập đến Spring Data JPA cùng với cơ sở dữ liệu Mongo và sẽ sử dụng các truy vấn áp dụng cho MongoDB
Mô hình miền và kho lưu trữHãy nhanh chóng xác định một mô hình 7 mà chúng ta sẽ sử dụng như một 4 cho kho lưu trữ của mình. Để thể hiện đúng các hoạt động khác nhau, chẳng hạn như sử dụng các toán tử 5 và 6 của Mongo, - chúng tôi sẽ có một vài thuộc tính khác nhauMongoDB xử lý các ID loại 9 hoặc 8. Tùy thuộc vào bạn chọn cái nào bạn sẽ sử dụng - và 8 có thể dễ dàng được chuyển đổi thành Chuỗi và ngược lại nên không tạo ra nhiều khác biệtTrong mọi trường hợp, hãy xác định một 3 đơn giản cho mô hình này
Nó hiện đang trống, nhưng nó chỉ hoạt động tốt cho các hoạt động CRUD, vì thực tế là 6 là hậu duệ của giao diện 2. Ngoài ra, phân trang và sắp xếp được hỗ trợ ngay lập tức
Hiểu chú thích @QueryChú thích 8 khá đơn giản và dễ hiểu
Khi phương thức 5 được gọi, kết quả sẽ được trả về. Hãy nhớ rằng trong thời gian biên dịch, Spring Boot không biết trước loại truy vấn sẽ trả về. Chẳng hạn, nếu nó trả về nhiều kết quả và bạn chỉ có một giá trị trả về dự kiến duy nhất - một ngoại lệ sẽ được đưa ra trong thời gian chạy
Bạn có thể có các truy vấn cố định hoặc động tại đây. Chẳng hạn, bạn có thể đơn giản hóa tên phương thức từ trước và ủy thác các tham số lộn xộn cho chú thích 8
Trong ví dụ đầu tiên, chúng tôi có một bộ tham số cố định, chẳng hạn như luôn tìm kiếm sách đang hoạt động ngay cả khi khách hàng không chỉ định điều đó. Đây là một lợi thế so với các phương thức truy vấn dẫn xuất vì tên phương thức rõ ràng. Ngoài ra, bạn có thể cung cấp tham số cho các phương thức mà sau đó có thể được đưa vào chính chú thích 8
Đối với những người có thể chưa hoàn toàn quen thuộc với cấu trúc truy vấn của MongoDB, hãy tìm hiểu sơ qua về những cấu trúc đó trước khi đi sâu vào trích xuất các tham số phương thức và sử dụng chúng trong các truy vấn Cấu trúc truy vấn MongoDBTuy nhiên, MongoDB có cấu trúc truy vấn khá đơn giản, khác với cấu trúc SQL. Nếu bạn chưa sử dụng MongoDB nhiều và nếu bạn đã quen với cơ sở dữ liệu quan hệ, bạn nên làm mới bộ nhớ của mình trên các cấu trúc này Tất cả các truy vấn Mongodb diễn ra giữa các dấu ngoặc nhọn
Điều kiện bình đẳng tiêu chuẩn tuân theo một mẫu đơn giản
Chẳng hạn, chúng ta có thể truy vấn sách của mình dưới dạng 0Truy vấn này kiểm tra tất cả các tài liệu 7 trong bộ sưu tập, phù hợp với cả 8 và 0Number`. Ngoài ra, bạn có thể thêm các toán tử vào hỗn hợp tại đây 1Truy vấn này kiểm tra xem 8 có phải là bất kỳ giá trị nào được cung cấp hay không. Một số toán tử được hỗ trợ là 2, 3, 4, 5, 6, 7, 8, 9 và 0, mặc dù có khá nhiều toán tử và bạn nên tìm hiểu về chúng. Ví dụ: đây là truy vấn tìm kiếm tất cả tài liệu của bất kỳ tác giả nào trong số hai tác giả, với số trang từ 400 đến 500, không được phát hành vào năm 2018 và 2019 2Hã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ó Đây là phần lớn kiến thức về truy vấn mà bạn sẽ cần cho rất nhiều truy vấn, nhưng đừng bỏ qua việc thực sự tìm hiểu về MongoDB trước khi nghiêm túc làm việc với nó. Ngoài ra, bạn cũng có thể muốn làm việc với các tập hợp
Tham chiếu các tham số phương thức được đặt tên và vị tríVới kiến thức chức năng MongoDB trong vành đai của chúng tôi - hãy xem cách chúng tôi có thể tham chiếu các tham số phương thức. Bạn có thể tham khảo chúng thông qua tên của chúng, kết hợp với chú thích 1 và biểu thức SpEL, dài dòng hơn nhưng linh hoạt hơn hoặc thông qua các đối số vị trí, đây thường là cách tiếp cận được ưa thích do tính đơn giản 3Trong cách tiếp cận đầu tiên, đối số vị trí đầu tiên, 2, tương ứng với đối số đầu tiên trong phương thức và giá trị của đối số sẽ được sử dụng thay vì 2. Điều này có nghĩa là bạn phải theo dõi các vị trí và không trộn lẫn chúng, nếu không, MongoDB sẽ âm thầm thất bại và không trả về kết quả, do tính linh hoạt của lược đồ, vì bạn cũng có thể có thuộc tính đóMẹo. Nếu bạn đã bật 7 làm cấp độ ghi nhật ký của mình - bạn sẽ có thể xem truy vấn được gửi tới Mongo trong nhật ký. Bạn có thể sao chép-dán truy vấn đó vào MongoDB Atlas để kiểm tra xem truy vấn có trả về kết quả chính xác ở đó hay không và xác minh xem bạn có vô tình làm sai vị trí hay không. Rất có thể - truy vấn của bạn vẫn ổn, nhưng bạn vừa trộn các vị trí nên kết quả là trốngTrong cách tiếp cận thứ hai, chúng tôi đang sử dụng các biểu thức SpEL để khớp các tham số được cung cấp với các tham số 8. Bạn không cần phải xác định chúng theo bất kỳ thứ tự cụ thể nào vì chúng sẽ được khớp theo tên - không phải theo vị trí. Mặc dù vậy, vẫn nên giữ một vị trí thống nhất cho khả năng đọc APIHãy xác định một điểm cuối đơn giản trong bộ điều khiển REST để kiểm tra phương thức này 4Sau khi thiết lập, hãy gửi yêu cầu 6 (hoặc điều hướng đến URL này qua trình duyệt) 5Ghi chú. Để có câu trả lời rõ ràng, hãy nhớ chuyển 7 của Jackson thành 8 trong 9 của bạn 6Phân trang kết quả với Page và PageableSắp xếp và phân trang được hỗ trợ ngay lập tức, vì 6 mở rộng 1. Như thường lệ, quy trình sẽ trả về một loại 2 và cung cấp một 3 cho chính phương thức đó 7Khi gọi phương thức, bạn cần cung cấp đối tượng 3 hợp lệ, đối tượng này có thể được tạo bằng cách thực hiện yêu cầu trangỞ đây, chúng tôi đang tạo một 5 cho trang đầu tiên (lập chỉ mục dựa trên 0) với kích thước của tài liệu 6. Nếu có 10 tài liệu phù hợp trong cơ sở dữ liệu, 5 trang sẽ được trả về, từ 7. Bạn phải tạoHãy in ra toàn bộ đối tượng 2 đã quay lại, trong đó 9 chứa kết quả của truy vấn và một số thuộc tính khác cũng có liên quan đến trang. Đây là nơi bạn có thể xem kết quả được sắp xếp như thế nào trong trang - i. e. sắp xếp, kích thước trang, số trang, v.v. 8Nếu bạn chỉ muốn hiển thị kết quả, bạn có thể truy cập 0 dữ liệu và 1 nó vào danh sách 9Để mở rộng chức năng này với tính năng sắp xếp, tất cả những gì bạn phải làm là cung cấp một đối tượng 2 cho 5, cho biết bạn muốn sắp xếp theo thuộc tính nào và theo thứ tự nào 0Ở đây, chúng tôi đã sắp xếp kết quả theo tên tăng dần và số trang tăng dần. Khi sắp xếp qua nhiều thuộc tính, bạn có thể xâu chuỗi bất kỳ số lượng thuộc tính nào thông qua 4 và cung cấp một 5 khácPhương thức 6 là một phương thức mặc định có trong giao diện 6 và chấp nhận cả hai phiên bản 2 và 3 và cũng có thể chạy mà không có chúng. Ở đây, chúng tôi đã tận dụng điều đó để truy vấn bằng cách sử dụng 3 mới 1Thuộc tính đầu tiên được ưu tiên ở đây. Mặc dù cuốn sách thứ hai có ít trang hơn cuốn đầu tiên và chúng tôi đã sắp xếp theo số trang tăng dần, việc sắp xếp theo tên sẽ cho kết quả theo thứ tự này. Nếu thứ tự theo tên không rõ ràng, thuộc tính thứ hai sẽ bị cắt Truy vấn với người vận hànhTất cả những gì đang được nói, hãy tạo lại truy vấn từ đầu bài viết 2Việc này dễ dàng như sao chép truy vấn này vào chú thích 8. Biết rằng chúng ta có ba cuốn sách, cuốn đó dài 652 trang và một trong số đó đã được xuất bản vào năm 2019 - chúng ta chỉ nên mong đợi một cuốn sách duy nhất được trả lại ở đây - "Vũ trụ toán học của chúng ta" của Max TegmarkHãy kiểm tra xem điều đó có đúng không 3Hoặc, để thực hiện sạch hơn 4Ghi chú. Khi cung cấp các mảng dữ liệu, chẳng hạn như 02 và 03 - không cần xác định tham số là mảng trong truy vấn - 04. Điều này sẽ tạo ra một mảng trong một mảng. Chú thích 8 sẽ tự động chuyển đổi đầu vào của bạn thành truy vấn phù hợpHãy cập nhật điểm cuối và cung cấp một số dữ liệu Và khi chúng tôi gửi yêu cầu đến nó 5Giống như đồng hồ Phần kết luậnTrong hướng dẫn này, chúng ta đã xem xét chú thích 8 trong ngữ cảnh Spring Data MongoDBChú thích cho phép bạn xác định các truy vấn của riêng mình, gốc và JPQL, cho các cơ sở dữ liệu khác nhau, quan hệ và không quan hệ. Chúng tôi đã chọn sử dụng truy vấn gốc Mongo để tương tác với cơ sở dữ liệu không liên quan. Sau khi xác định một mô hình và một kho lưu trữ cho nó, chúng ta đã khám phá cấu trúc truy vấn được MongoDB sử dụng và cách thức hoạt động của chú thích 8 nói chung. Tiếp theo là tham khảo các tham số phương thức được đặt tên và vị trí, phân trang và sắp xếp kết quả truy vấn, cũng như cách sử dụng các toán tử MongoDB để xây dựng các truy vấn phức tạp hơn
Có thể sử dụng JPA với cơ sở dữ liệu NoSQL không?Hibernate OGM cung cấp hỗ trợ Java Persistence API (JPA) cho kho dữ liệu NoSQL . NoSQL là một thuật ngữ chung bao gồm nhiều loại lưu trữ dữ liệu. Ví dụ: điều này bao gồm kho dữ liệu khóa-giá trị, tài liệu, hướng cột và hướng biểu đồ.
MongoDB có thể được sử dụng với khởi động mùa xuân không?Dễ dàng kết nối MongoDB Atlas với Spring Boot
. Dữ liệu ban đầu MongoDB artifactid (phần phụ thuộc mà chúng tôi đã thêm khi tạo dự án Spring Initializr) trong pom. xml. Một tài sản trên ứng dụng.
Có thể sử dụng Hibernate với MongoDB không?Làm cách nào để sử dụng Hibernate OGM với MongoDB? . Để đưa OGM vào dự án Hibernate MongoDB của bạn, chỉ cần đưa thêm một phụ thuộc vào danh sách phụ thuộc của bạn. Tiếp theo, để xác định đơn vị kiên trì, hãy tạo META-INF/persistence. To get started with Hibernate MongoDB, you first need to build the OGM from Source via GitBug. To include OGM in your Hibernate MongoDB project, just include one more dependency in your list of dependencies. Next, to define the persistence unit, create a META-INF/persistence.
MongoDB không phù hợp để làm gì?Một trong những nhược điểm của MongoDB là không hỗ trợ giao dịch . Mặc dù ngày càng có ít ứng dụng yêu cầu giao dịch nhưng vẫn có một số ứng dụng cần giao dịch để cập nhật nhiều tài liệu/bộ sưu tập. Nếu đó là chức năng cần thiết cho nhóm của bạn thì không nên sử dụng MongoDB. |