MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách sử dụng Spring Boot với MongoDB

Spring Boot là một khung mã nguồn mở dựa trên Java để tạo các microservices, cho phép các nhà phát triển triển khai và phát triển các dịch vụ một cách độc lập. Mỗi dịch vụ đang chạy đều có quy trình của nó, do đó đạt được mô hình nhẹ hỗ trợ các ứng dụng kinh doanh. Microservices có một số ưu điểm:khả năng mở rộng đơn giản, cấu hình tối thiểu, thời gian sản xuất ít hơn, khả năng tương thích với vùng chứa và dễ dàng phát triển.

Khởi động mùa xuân cung cấp một nền tảng tốt cho các nhà phát triển để xây dựng các ứng dụng mùa xuân độc lập và sẵn sàng cho sản xuất mà bạn có thể chạy; do đó, người ta có thể bắt đầu với các cấu hình tối thiểu mà không cần thiết lập toàn bộ cấu hình mùa xuân.

Ví dụ, việc xử lý quản lý sự phụ thuộc rất phức tạp đối với các dự án lớn; Vì vậy, Spring Boot giải quyết khó khăn này bằng cách cung cấp một tập hợp các phụ thuộc để tạo sự thuận tiện cho nhà phát triển. Ứng dụng Spring Boot quét tất cả các bean và các khai báo gói khi ứng dụng khởi chạy; Bên cạnh đó, chú thích ứng dụng Spring Boot bao gồm quét thành phần, Tự động cấu hình và Cấu hình khởi động mùa xuân.

Tính năng của Spring Boot

Dưới đây là một số tính năng tiêu chuẩn của Spring-boot:

  1. Nó tự động định cấu hình thư viện Spring và bên thứ 3 khi có thể
  2. Nó cung cấp các phụ thuộc "starter" được xác định để đơn giản hóa cấu hình bản dựng của bạn
  3. Nó không yêu cầu cấu hình XML và Không tạo mã
  4. Hơn nữa, nó cung cấp các tính năng sẵn sàng cho sản xuất, chẳng hạn như chỉ số cấu hình bên ngoài và kiểm tra tình trạng
  5. Nó có một Tomcat nhúng, Undertow trực tiếp hoặc Jetty; do đó, không cần phải triển khai các tệp WAR
  6. Ngoài ra, nó tạo ra các ứng dụng Spring độc lập

Ưu điểm của Spring Boot đối với nhà phát triển

  1. Nó làm tăng năng suất
  2. Nó giúp bạn dễ dàng phát triển và hiểu các ứng dụng mùa xuân
  3. Nó làm giảm thời gian phát triển.

Mục tiêu của Spring Boot

Nó được thiết kế để:

  1. Phát triển các ứng dụng mùa xuân sẵn sàng sản xuất theo cách đơn giản hơn
  2. Tránh cấu hình XML phức tạp trong Spring
  3. Giảm thời gian phát triển và chạy ứng dụng một cách độc lập
  4. Cung cấp một cách đơn giản hơn để bắt đầu với ứng dụng.

Spring Boot được ưa thích hơn vì các tính năng và lợi ích mà nó cung cấp như:

  1. Cung cấp xử lý hàng loạt mạnh mẽ và quản lý các điểm cuối REST
  2. Cung cấp một cách linh hoạt hơn để định cấu hình Giao dịch dữ liệu, Java Beans j và cấu hình XML.
  3. Cung cấp chú thích- dựa trên các ứng dụng mùa xuân
  4. Đơn giản hóa việc quản lý sự phụ thuộc, nó bao gồm một Vùng chứa Servlet được nhúng
  5. Không cần cấu hình thủ công vì mọi thứ trong Spring Boot đều được tự động cấu hình

MongoDB là một chương trình cơ sở dữ liệu hướng tài liệu, đa nền tảng, mã nguồn. Nó là một cơ sở dữ liệu tài liệu cung cấp khả năng mở rộng cao và tính linh hoạt của các chương trình. Bên cạnh đó, nó cung cấp cho người dùng khả năng truy vấn và lập chỉ mục nhanh chóng, về lâu dài sẽ tăng hiệu suất của nó.

MongoDB được phân loại là một chương trình cơ sở dữ liệu NoSQL và sử dụng các tài liệu giống JSON với các lược đồ tùy chọn và linh hoạt. Cơ sở dữ liệu này được phát triển bởi MongoDB Inc., một công ty có trụ sở tại Mỹ chuyên phát triển và cung cấp hỗ trợ thương mại cho cơ sở dữ liệu nguồn có sẵn. MongoDB được cấp phép theo Giấy phép công khai phía máy chủ (SSPL).

MongoDB đã có một sự cải tiến liên tục về các tính năng của nó do sự phát triển phiên bản liên tục chẳng hạn;

DATE PHIÊN BẢN LƯU Ý VỀ TÍNH NĂNG
Tháng 12 năm 2009 1.2 Các hàm JavaScript được lưu trữ
Tạo chỉ mục nhanh hơn
Nhiều chỉ mục hơn cho mỗi bộ sưu tập
Thời gian đồng bộ hóa có thể định cấu hình
Một số tính năng nhỏ và các bản sửa lỗi
Tháng 8 năm 2010 1.6 Bản đồ / thu nhỏ
Bộ bản sao
sharding sẵn sàng sản xuất
Hỗ trợ cho IPv6
Tháng 3 năm 2013 2,4 Chỉ mục băm
Chuyển sang công cụ JavaScript V8
Hỗ trợ không gian địa lý nâng cao
Tìm kiếm văn bản nâng cao
Cải tiến bảo mật
Ngày 8 tháng 4 năm 2014 2.6 Cải tiến công cụ truy vấn
Cải tiến tổng hợp
Cải tiến bảo mật
Giao thức thao tác ghi mới
Tích hợp tìm kiếm văn bản
Ngày 3 tháng 3 năm 2015 3.0 Cải thiện chức năng giải thích
API công cụ lưu trữ phù hợp
MongoDB Ops Manager
Hỗ trợ công cụ lưu trữ Tiger có dây
Xác thực SCRAM-SHA-1
Ngày 8 tháng 12 năm 2015 3.2 Cải tiến về bầu cử nhân rộng
Xác thực tài liệu
Công cụ lưu trữ Tiger có dây theo mặc định
Định cấu hình máy chủ dưới dạng tập hợp bản sao
Đã chuyển từ V8 sang Spider Monkey
Xác thực tài liệu
Đọc Quan ngại
Ngày 29 tháng 11 năm 2016 3,4 Đối chiếu, mối quan tâm và lượt xem có thể đọc theo tuyến tính
Tháng 6 năm 2018 4.0 Giao dịch nâng cao
Ngày 13 tháng 7 năm 2021 5.0 Mã hóa cấp trường phía máy khách
API được phiên bản trong tương lai
Hỗ trợ chuỗi thời gian
Việc sạc lại trực tiếp yêu cầu thay đổi ánh xạ phân đoạn đối tượng và di chuyển đối tượng sang phân đoạn khác.

Các ứng dụng độc lập nhanh chóng và dễ dàng có thể được tạo với sự trợ giúp của Spring Boot (như chúng ta sẽ thấy ở phần sau). Do tính dễ sử dụng, MongoDB đã trở thành cơ sở dữ liệu NoSQL phổ biến nhất. Có thể tạo nhanh chóng, an toàn, đáng tin cậy và cần thời gian phát triển tối thiểu bằng cách kết hợp Spring Boot và MongoDB.

Bài viết này hướng dẫn cách sử dụng API Spring Data MongoDB để kết hợp Spring Boot với MongoDB.

Cách sử dụng Spring Boot với MongoDB

Spring Boot là một khuôn khổ web dựa trên microservice được tự động cấu hình và có thể cung cấp các tính năng bảo mật và truy cập cơ sở dữ liệu tích hợp sẵn. Do đó, Spring boot có thể nhanh chóng tạo một ứng dụng độc lập mà không cần thay đổi cấu hình. Mặt khác, MongoDB là cơ sở dữ liệu NoSQL phổ biến nhất vì nó có thể dễ dàng lưu trữ và truy xuất dữ liệu. Kết hợp Spring Boot và MongoDB tạo ra các ứng dụng an toàn, nhanh chóng, đáng tin cậy, yêu cầu thời gian phát triển tối thiểu.

Spring Boot tạo ra các ứng dụng sẵn sàng sản xuất nhanh chóng. MongoDB và Spring Boot tương tác bằng cách sử dụng lớp Mẫu Mongo và giao diện Kho lưu trữ Mongo.

  • Mẫu Mongo - nó triển khai một tập hợp các API sẵn sàng sử dụng. Một lựa chọn tốt cho các hoạt động như tổng hợp cập nhật, trong số những hoạt động khác; hơn nữa, Mongo Template cung cấp khả năng kiểm soát tốt hơn đối với các truy vấn tùy chỉnh.
  • Kho lưu trữ Mongo được sử dụng cho các truy vấn cơ bản liên quan đến nhiều trường tài liệu như xem tài liệu và tạo dữ liệu.

Cấu hình Spring Boot MongoDB sử dụng cả hai phương pháp chỉ cần một vài dòng mã.

Spring Boot là một khung ứng dụng cho các ứng dụng web Java dựa trên khung MVC (Model-View-Controller). Việc tiêm phụ thuộc của nó xử lý các tính năng như bảo mật cơ sở dữ liệu, truy cập và khởi tạo, cho phép các nhà phát triển tập trung vào logic nghiệp vụ. Ngoài ra, nó được xây dựng dựa trên Spring framework, chủ yếu dành cho các API REST và yêu cầu rất ít cấu hình. Nó có bốn lớp:

Lớp trình bày - Phần xem của khung MVC xử lý giao diện người dùng.

Lớp nghiệp vụ là bộ điều khiển nơi tất cả logic nghiệp vụ và xác nhận được thực hiện.

Lớp bền vững - Lớp này chuyển các đối tượng nghiệp vụ sang các đối tượng cơ sở dữ liệu.

Lớp cơ sở dữ liệu - Các hoạt động CRUD (Tạo, Đọc, Cập nhật, Xóa) thực tế.

MongoDB là một cơ sở dữ liệu nhanh có khả năng xử lý một lượng lớn dữ liệu có tổ chức và phi cấu trúc, lý tưởng cho các ứng dụng web. MongoDB lưu trữ dữ liệu dưới dạng các đối tượng Binary JSON, giúp đơn giản hóa việc truy xuất dữ liệu. Khung công tác Spring bao gồm các trình kết nối mạnh mẽ cho phép hoạt động cơ sở dữ liệu hiệu quả với MongoDB.

Chúng tôi chỉ quan tâm đến các lớp Kiên trì và Cơ sở dữ liệu trong hướng dẫn ví dụ Spring Boot với MongoDB này. Chúng tôi sẽ thực thi phần mềm của mình thông qua Môi trường phát triển tích hợp (IDE) để duy trì sự chú trọng mạnh mẽ vào hoạt động CRUD. Để kết nối Spring Boot và MongoDB, chúng tôi sẽ thêm các cấu hình Spring Boot MongoDB.

Những gì chúng ta sẽ xây dựng trong ví dụ này

Hãy để chúng tôi phát triển danh sách mua sắm hàng tạp hóa của người dùng hư cấu. Chúng tôi sẽ thực hiện các thủ tục sau:

  1. Chúng tôi xác định một mặt hàng tạp hóa Đối tượng Java cũ (POJO) bằng ID, tên, số lượng và danh mục trong ứng dụng Spring của chúng tôi.
  2. Sau đó, chúng tôi tiến hành các hành động tạo, đọc, cập nhật và xóa (CRUD) thông qua giao diện công khai của MongoRepository.
  3. Cuối cùng, chúng tôi chứng minh một phương pháp khác để sửa đổi tài liệu bằng cách sử dụng lớp MongoTemplate.

Điều kiện tiên quyết

Chúng tôi yêu cầu:

  • Cluster MongoDB Atlas (nếu bạn chưa có tài khoản, hãy đăng ký miễn phí trước khi chuyển sang giai đoạn tiếp theo).
  • Spring Initializr
  • Java 1.8
  • Maven (cài đặt Maven bằng cách đi tới “Trợ giúp -> sau đó Cài đặt phần mềm mới” trong Eclipse).
  • Môi trường phát triển tích hợp (IDE) sẽ nhập các thư viện và phần phụ thuộc cần thiết. Eclipse sẽ được sử dụng cho minh họa dự án này.

Để bắt đầu, hãy tạo một dự án Spring Boot với các cài đặt sau bằng Spring Initializr:

Chọn Maven Project với Java (8) làm ngôn ngữ lập trình và Spring Boot 2.5.3 làm phiên bản. Ngoài ra, hãy thêm các phụ thuộc Spring Web và Spring Data MongoDB. Spring Web tích hợp máy chủ Apache Tomcat, Spring MVC và REST vào ứng dụng của bạn, để tập trung quản lý tất cả các phần phụ thuộc chung.

Chúng tôi tận dụng sự phụ thuộc của Spring Data MongoDB để truy cập dữ liệu từ cụm MongoDB Atlas của chúng tôi trong ứng dụng này.

Nhập siêu dữ liệu cho dự án (như minh họa ở trên) và chọn tùy chọn JAR. Spring Initializr quản lý việc tạo tệp pom.xml trong khi Maven tải xuống các phần phụ thuộc được yêu cầu thông qua pom.xml.

Điều này hoàn thành việc chuẩn bị của chúng tôi cho các cài đặt. Sau đó, chúng ta có thể nhấp vào nút Tạo để tạo tất cả các tệp cần thiết để khởi động dự án Spring Boot. Sau đó, trình duyệt sẽ bắt đầu tải xuống tệp ZIP tự động.

Sau khi tải xuống tệp ZIP, hãy giải nén dự án. Từ IDE, mở dự án. Bạn có thể xem một ví dụ về cấu trúc dự án tương tự như sau:

Như chúng ta có thể thấy, các phụ thuộc mà chúng tôi đã thêm vào được bao gồm trong tệp pom.xml dưới dạng ArtifactId:

Đã đến lúc điền nội dung vào thư mục con src / main / java.

Triển khai Mô hình MongoDB

Lớp POJO hoặc GroceryItem đóng vai trò là mô hình của chúng tôi ở đây.

Tạo một gói có tên “com.example.mdbspringboot.model” và bao gồm lớp GroceryItem.java trong đó.

Chú thích @Document được sử dụng để chỉ định tên bộ sưu tập mà mô hình sẽ sử dụng. MongoDB sẽ tạo bộ sưu tập nếu nó chưa tồn tại.

Chúng tôi có thể tạo getters và setters cho mã này bằng cách sử dụng tùy chọn Nguồn Eclipse -> Tạo Getters và Setters. Đầu tiên, sử dụng chú thích @Id để chỉ định _id khóa chính của tài liệu MongoDB. MongoDB sẽ tự động tạo ra trường _id khi tài liệu được tạo nếu chúng ta không chỉ định bất kỳ điều gì.

Triển khai API MongoDB trong Spring Boot

Kho lưu trữ là nơi API được triển khai. Nó đóng vai trò là cầu nối giữa cơ sở dữ liệu và mô hình, cung cấp quyền truy cập vào tất cả các hoạt động CRUD.

Tạo một gói có tên “com.example.mdbspringboot.repository” để chứa tất cả các tệp kho lưu trữ.

Chúng tôi tạo giao diện công khai cho ItemRepository để mở rộng giao diện MongoRepository.

Cách tiếp cận đầu tiên, findItemByName, yêu cầu đối số truy vấn, đối số này chỉ định trường mà truy vấn sẽ được lọc. Điều này được chỉ định bằng cách sử dụng chú thích @Query. Kỹ thuật thứ hai tận dụng trường danh mục để truy xuất tất cả các đối tượng thuộc một danh mục cụ thể. Chúng tôi chỉ muốn tên và số của trường được chiếu trong câu trả lời truy vấn; do đó, chúng tôi đặt các trường đó thành 1. Chúng tôi áp dụng lại phương thức count () ở trạng thái hiện tại của nó.

Ví dụ về MongoDB với Spring Boot CRUD

Hiện chúng tôi đã sẵn sàng phát triển Ứng dụng Spring của mình và thử nghiệm các phương pháp.

Để liên kết với MongoDB Atlas, chúng tôi xác định chuỗi kết nối trong tệp application.properties của thư mục src / main / resources. Chuỗi kết nối của cụm có thể được truy cập trong giao diện người dùng Atlas. Không có tệp nào khác được yêu cầu bao gồm mã liên quan đến kết nối. Spring Boot thay mặt chúng tôi quản lý kết nối cơ sở dữ liệu.

Ngoài ra, chúng tôi chỉ định tên cơ sở dữ liệu ở đây - MongoDB sẽ tạo một tên cơ sở dữ liệu nếu nó không tồn tại.

Chúng tôi không sử dụng Bộ điều khiển hoặc Chế độ xem trong mẫu Spring Boot MongoDB này. Thay vào đó, để xem kết quả trên bảng điều khiển, chúng tôi sẽ sử dụng CommandLineRunner.

Tạo lớp chính MdbSpringBootApplication.java trong gói gốc com.example.mdbspringboot:

Để thực thi ứng dụng mùa xuân, lớp MdbSpringBootApplication của chúng ta sử dụng giao diện CommandLineRunner. ItemRepository là tự động, có nghĩa là Spring sẽ tự động phát hiện ra nó. Chú thích @SpringBootApplication được sử dụng để khởi tạo Ngữ cảnh ứng dụng. Ngoài ra, chúng tôi kích hoạt Kho lưu trữ Mongo với @EnableMongoRepositories. Cấu trúc dự án của chúng tôi bây giờ sẽ giống như sau:

Bây giờ, hãy thêm các hoạt động của kho lưu trữ vào lớp chính, lớp này sẽ được sử dụng cho các hoạt động CRUD:

Tạo hoạt động MongoDB Spring Boot

Chúng tôi sẽ sử dụng chức năng lưu để tạo tài liệu mới. Chúng ta có thể truy cập phương thức lưu thông qua lớp SimpleMongoRepository, lớp này sử dụng giao thức MongoRepository. Giao diện ItemRepository của chúng tôi mở rộng giao diện ItemRepository của MongoRepository.

Phương thức lưu sẽ chấp nhận một tham số kiểu GroceryItem. Phần này sẽ xây dựng năm mặt hàng tạp hóa (tài liệu) sau đó sử dụng chức năng lưu để lưu trữ chúng vào MongoDB.

Hoạt động đọc Spring Boot MongoDB

Chúng tôi đang tiến hành bốn hoạt động đọc riêng biệt trong ứng dụng này:

Sử dụng hàm findAll () để truy xuất tất cả các tài liệu (các mặt hàng tạp hóa).

Hàm findItemByName trả về một mục (tài liệu) dựa trên trường tên của nó.

Truy xuất danh sách các đối tượng được sắp xếp theo danh mục.

Tính tổng số đối tượng.

Chúng tôi có thể thiết kế một hàm trợ giúp để định dạng kết quả của các thao tác đọc:

Thao tác cập nhật MongoDB Spring Boot

Giả sử chúng ta đổi ý và thích từ “munchies” hơn “snack” trong danh sách hàng tạp hóa của mình. Chúng tôi sẽ cần cập nhật bất kỳ tài liệu nào có danh mục “đồ ăn nhẹ”. Để thực hiện điều này, trước tiên chúng tôi phải truy xuất tất cả các giấy tờ thuộc danh mục “đồ ăn nhẹ”, thay đổi danh mục thành “munchies”, sau đó lưu tất cả các tài liệu.

Thao tác xóa MongoDB Spring Boot

Thay vì thay đổi danh mục hoặc mặt hàng, chúng tôi có thể muốn xóa một mặt hàng tạp hóa khỏi danh sách của mình. Sử dụng chức năng deleteById được xác định trước, chúng tôi có thể xóa mặt hàng tạp hóa bằng một ID cụ thể.

Chúng tôi có thể sử dụng tạp hóaItemRepo.deleteAll (); chức năng loại bỏ tất cả các mục. Xóa tất cả tài liệu trong bộ sưu tập sẽ không xóa chúng.

Lắp ráp các hoạt động CRUD

Sau đó, chúng tôi sẽ triển khai CommandLineRunner. Để gọi các phương thức trước đó, hãy sử dụng phương thức run ():

Các câu lệnh system.out được sử dụng để cải thiện sự xuất hiện của đầu ra.

Khi phần mềm được chạy, kết quả sau được mong đợi:

Chức năng cập nhật của MongoDB Spring Boot kết hợp với MongoTemplate

Ngoài ra, chúng ta có thể sử dụng lớp MongoTemplate để thực hiện các hành động cập nhật trên một trường cụ thể. Nó bao gồm chức năng mặc định của gói org.springframework.data.mongodb.core.query. Chúng tôi không phải viết một lượng lớn mã và có thể hoàn thành quá trình cập nhật chỉ với một truy vấn cơ sở dữ liệu. MongoTemplate cũng có thể được sử dụng cho các quy trình phức tạp hơn như tổng hợp (không nằm trong phạm vi của hướng dẫn này).

Một kho lưu trữ tùy chỉnh phải được tạo trước khi sử dụng một lớp có tên là MongoTemplate. Đây là nơi sẽ tạo truy vấn cho bản cập nhật.

Cho phép tôi trình bày cách xây dựng một phương pháp cập nhật số lượng của một mặt hàng trong siêu thị.

Xây dựng một giao diện CustomItemRepository:

Chúng tôi có thể mở rộng giao diện với nhiều phương thức nếu cần và cung cấp các ví dụ trong lớp CustomItemRepositoryImpl:

Spring sẽ nhập các phụ thuộc đối tượng vì MongoTemplate là @Autowosystem. Ngoài ra, chú thích @Component cho phép Spring khám phá giao diện CustomItemRepository.

Bước sau là gọi hàm này từ bên trong lớp chính của chúng ta. Như với tạp hóaItemRepo, chúng ta phải xác định customRepo của mình như sau:

Sau đó, trong lớp chính, hãy tạo phương thức sau gọi hàm customRepo của chúng ta:

Thêm phương thức sau vào phương thức run để nó được gọi khi chương trình được chạy:

Bạn sẽ nhận được kết quả sau:

Như đã nói trước đây, chúng tôi có thể thực hiện sửa đổi trong một giao dịch cơ sở dữ liệu duy nhất thay vì MongoRepository, yêu cầu ba hành động:tìm kiếm, đặt và lưu. MongoTemplate cũng bao gồm phương thức updateMulti (), cho phép bạn cập nhật nhiều tài liệu đồng thời.

Kết luận

Chúng tôi đã trình bày trong bài viết này cách tích hợp MongoDB với Spring Boot đơn giản như thế nào. Không cần mã nào khác để kết nối với MongoDB Atlas. MongoDB Atlas cung cấp giao diện dễ sử dụng để lưu trữ và truy cập dữ liệu từ bất kỳ vị trí nào. Nếu bạn đã hoàn thành hướng dẫn đơn giản này, chúng tôi tin rằng bạn đã hiểu cách sử dụng Spring Boot với MongoDB. Nếu bạn gặp bất kỳ khó khăn nào, hãy liên hệ qua phần nhận xét để được trợ giúp. Cảm ơn vì đã đọc.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách chạy các lệnh mongodb thô từ pymongo

  2. Kết nối với một cơ sở dữ liệu cụ thể theo mặc định trong mongodb

  3. Lỗi MongoDB:Không thể sử dụng ghi có thể thử lại với giới hạn =0

  4. Gọi lại Mongoose.js instance.save () không kích hoạt

  5. Nhóm theo tình trạng trong MongoDB