Hướng dẫn how does mongodb connect to java application? - làm thế nào để mongodb kết nối với ứng dụng java?

Bởi Trisha Gee, kỹ sư và người ủng hộ Java tại MongoDB

Java là một trong những ngôn ngữ lập trình phổ biến nhất trong cộng đồng MongoDB. Đối với người dùng mới, điều quan trọng là cung cấp một cái nhìn tổng quan về cách làm việc với trình điều khiển Java MongoDB và cách sử dụng MongoDB làm nhà phát triển Java.

Trong bài đăng này, nhằm vào các nhà phát triển Java/JVM mới đến MongoDB, chúng tôi sẽ cung cấp cho bạn một hướng dẫn về cách bắt đầu, bao gồm:

  • Cài đặt
  • Thiết lập các phụ thuộc của bạn
  • Đang kết nối
  • Bộ sưu tập và tài liệu là gì?
  • Những điều cơ bản của việc viết và đọc từ cơ sở dữ liệu
  • Tổng quan về một số thư viện JVM

Cài đặt

Thiết lập các phụ thuộc của bạn

Đang kết nối

Bộ sưu tập và tài liệu là gì?

Những điều cơ bản của việc viết và đọc từ cơ sở dữ liệu

Tổng quan về một số thư viện JVM

Các hướng dẫn cài đặt cho MongoDB được ghi lại rộng rãi, vì vậy tôi sẽ không lặp lại bất kỳ điều gì ở đây. Nếu bạn muốn làm theo hướng dẫn bắt đầu này, bạn sẽ muốn tải xuống phiên bản phù hợp của MongoDB và giải nén/cài đặt nó. Tại thời điểm viết, phiên bản mới nhất của MongoDB là 2.6.3, đó là phiên bản tôi sẽ sử dụng.

MongoDB shell version: 2.6.3                           
connecting to: test
> _  

Một lưu ý về bảo mật

> show dbs

Trong một môi trường sản xuất thực sự, tất nhiên bạn sẽ muốn xem xét xác thực. Đây là một cái gì đó mà MongoDB thực hiện nghiêm túc và có một phần tài liệu về bảo mật. Nhưng với mục đích của cuộc biểu tình này, tôi sẽ cho rằng bạn đã làm việc đó hoặc bạn đang chạy trong chế độ đáng tin cậy của Cameron (tức là bạn đang ở trong môi trường phát triển không mở cửa cho công chúng) .

> show dbs
admin  (empty)
local  0.078GB

Nhìn xung quanh

Khi bạn đã cài đặt MongoDB và bắt đầu (một quá trình chỉ mất vài phút), bạn có thể kết nối với vỏ MongoDB. Hầu hết các tài liệu kỹ thuật MongoDB được viết cho shell, vì vậy, nó luôn hữu ích để biết cách truy cập nó và cách sử dụng nó để khắc phục sự cố hoặc giải pháp nguyên mẫu.

Khi bạn kết nối, bạn sẽ thấy một cái gì đó giống như

Vì bạn có thể ở trong bảng điều khiển, hãy để Lừa lấy nó cho một vòng quay. Đầu tiên, chúng tôi sẽ xem xét tất cả các cơ sở dữ liệu có ngay bây giờ:

Giả sử đây là một cài đặt sạch, không nên xem nhiều:

Điều đó rất tuyệt, nhưng như bạn có thể thấy có rất nhiều tài liệu về cách chơi với MongoDB từ vỏ. Shell là một môi trường thực sự tuyệt vời để thử các truy vấn và xem xét mọi thứ từ quan điểm của máy chủ. Tuy nhiên, tôi đã hứa với bạn Java, vì vậy chúng tôi sẽ bước ra khỏi vỏ và tiếp tục kết nối qua Java.

compile 'org.mongodb:mongo-java-driver:2.12.3'

Bắt đầu với Java

Đầu tiên, bạn sẽ muốn thiết lập dự án/IDE của mình để sử dụng trình điều khiển Java MongoDB. Ngày nay, IDE có xu hướng chọn các phụ thuộc chính xác thông qua cấu hình Gradle hoặc Maven của bạn, vì vậy tôi sẽ chỉ bao gồm cấu hình những thứ này.


    
        org.mongodb
        mongo-java-driver
        2.12.3
    

Tại thời điểm viết bài, phiên bản mới nhất của trình điều khiển Java là 2.12.3 - điều này được thiết kế để hoạt động với dòng MongoDB 2.6.

Tốt nghiệp

Bạn cần phải thêm phần sau vào các phụ thuộc của mình trong Build.Gradle:

Maven

Đối với Maven, bạn sẽ muốn:

MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));

Ngoài ra, nếu bạn thực sự là trường học cũ và thích duy trì sự phụ thuộc của bạn một cách khó khăn, bạn luôn có thể tải xuống tệp jar.

Nếu bạn không có một dự án mà bạn muốn thử với MongoDB, tôi đã tạo ra một loạt các bài kiểm tra đơn vị trên GitHub mà bạn có thể sử dụng để cảm nhận khi làm việc với MongoDB và Java.

MongoClient mongoClient = new MongoClient();

Kết nối thông qua Java

Giả sử bạn đã giải quyết các phụ thuộc của mình và bạn đã thiết lập dự án của mình, bạn đã sẵn sàng kết nối với MongoDB từ ứng dụng Java của bạn.

Vì MongoDB là cơ sở dữ liệu tài liệu, bạn có thể không ngạc nhiên khi biết rằng bạn không kết nối với nó thông qua các phương pháp DB truyền thống/quan hệ DB truyền thống như JDBC. Nhưng nó rất đơn giản như nhau:

Một điều cuối cùng bạn cần biết: Bạn muốn ứng dụng của mình tắt các kết nối với MongoDB khi nó hoàn thành chạy. Luôn đảm bảo ứng dụng hoặc máy chủ web của bạn gọi

compile 'org.mongodb:mongo-java-driver:2.12.3'
1 khi tắt.

Hãy thử kết nối với MongoDB bằng cách kiểm tra trong bài tập1ConnectingTest để vượt qua.

Bàn của tôi ở đâu?

MongoDB không có bảng, hàng, cột, tham gia, v.v. Có một số khái niệm mới để học khi bạn sử dụng nó, nhưng không có gì quá khó khăn.

Mặc dù bạn vẫn có khái niệm về cơ sở dữ liệu, các tài liệu (mà chúng tôi sẽ trình bày chi tiết hơn sau này) được lưu trữ trong các bộ sưu tập, thay vì cơ sở dữ liệu của bạn được tạo thành từ các bảng dữ liệu. Nhưng nó có thể hữu ích khi nghĩ về các tài liệu như hàng và bộ sưu tập như bảng trong cơ sở dữ liệu truyền thống. Và bộ sưu tập có thể có các chỉ mục như bạn mong đợi.

Chọn cơ sở dữ liệu và bộ sưu tập

Bạn sẽ muốn xác định cơ sở dữ liệu và bộ sưu tập mà bạn sử dụng trong ứng dụng Java của mình. Nếu bạn nhớ, một vài phần trước đây, chúng tôi đã sử dụng vỏ MongoDB để hiển thị cơ sở dữ liệu trong ví dụ MongoDB của bạn và bạn đã có

compile 'org.mongodb:mongo-java-driver:2.12.3'
2 và
compile 'org.mongodb:mongo-java-driver:2.12.3'
3.

Tạo và nhận cơ sở dữ liệu hoặc bộ sưu tập là cực kỳ dễ dàng trong MongoDB:

DB database = mongoClient.getDB("TheDatabaseName");

Bạn có thể thay thế

compile 'org.mongodb:mongo-java-driver:2.12.3'
4 bằng bất cứ tên nào của cơ sở dữ liệu của bạn. Nếu cơ sở dữ liệu không tồn tại, nó sẽ được tạo tự động ngay lần đầu tiên bạn chèn bất cứ thứ gì vào đó, do đó, không cần kiểm tra null hoặc xử lý ngoại lệ trên cơ sở dữ liệu không tồn tại.

Nhận bộ sưu tập bạn muốn từ cơ sở dữ liệu cũng rất đơn giản:

DBCollection collection = database.getCollection("TheCollectionName");

Một lần nữa, thay thế

compile 'org.mongodb:mongo-java-driver:2.12.3'
5 bằng bất cứ điều gì bộ sưu tập của bạn được gọi.

Nếu bạn chơi cùng với mã kiểm tra, giờ đây bạn đã biết đủ để có được các bài kiểm tra trong bài tập2MongoclientTest để vượt qua.
in Exercise2MongoClientTest to pass.

Giới thiệu về các tài liệu

Một cái gì đó, hy vọng, trở nên rõ ràng với bạn khi bạn làm việc thông qua các ví dụ trong blog này, là MongoDB khác với các cơ sở dữ liệu quan hệ truyền thống mà bạn đã sử dụng. Như tôi đã đề cập, có các bộ sưu tập, thay vì bảng và tài liệu, thay vì các hàng và cột.

Các tài liệu linh hoạt hơn nhiều so với một hàng truyền thống, vì bạn có một lược đồ năng động hơn là một lược đồ được thi hành. Bạn có thể phát triển tài liệu theo thời gian mà không phải chịu chi phí di chuyển lược đồ và các tập lệnh cập nhật tẻ nhạt. Nhưng tôi đã vượt lên trước mình.

Mặc dù các tài liệu don lồng trông giống như các bảng, cột và hàng mà bạn đã từng sử dụng, nhưng chúng sẽ trông quen thuộc nếu bạn đã làm bất cứ điều gì thậm chí giống như JSON từ xa. Đây là một ví dụ:

person = {
  _id: "jo",
  name: "Jo Bloggs",
  age: 34,
  address: {
    street: "123 Fake St",
    city: "Faketon",
    state: "MA",
    zip: “12345”
  }
  books: [ 27464, 747854, ...]
}  

Có một vài điều thú vị cần lưu ý:

  1. Giống như JSON, các tài liệu là cấu trúc của các cặp tên/giá trị và các giá trị có thể là một trong số các loại nguyên thủy, bao gồm các chuỗi và các loại số khác nhau.
  2. Nó cũng hỗ trợ các tài liệu lồng nhau - trong ví dụ trên,
    compile 'org.mongodb:mongo-java-driver:2.12.3'
    
    6 là một bộ ảnh con bên trong tài liệu
    compile 'org.mongodb:mongo-java-driver:2.12.3'
    
    7. Không giống như cơ sở dữ liệu quan hệ, nơi bạn có thể lưu trữ điều này trong một bảng riêng và cung cấp một tham chiếu đến nó, trong MongoDB nếu dữ liệu đó có lợi từ việc luôn được liên kết với cha mẹ của nó, bạn có thể nhúng nó vào cha mẹ của nó.
  3. Bạn thậm chí có thể lưu trữ một mảng các giá trị. Trường sách trong ví dụ trên là một loạt các số nguyên có thể đại diện, ví dụ, ID của những cuốn sách mà người đó đã mua hoặc mượn.

Bạn có thể tìm hiểu thêm thông tin chi tiết về tài liệu trong tài liệu.

Tạo tài liệu và lưu nó vào cơ sở dữ liệu

Trong Java, nếu bạn muốn tạo một tài liệu như ở trên, bạn sẽ làm một cái gì đó như:

> show dbs
0

Tại thời điểm này, nó rất dễ dàng để lưu nó vào cơ sở dữ liệu của bạn:

> show dbs
1

Lưu ý rằng ba dòng đầu tiên được thiết lập và bạn không cần phải khởi tạo lại những thứ đó mỗi lần.

Bây giờ nếu chúng ta nhìn vào bên trong MongoDB, chúng ta có thể thấy rằng cơ sở dữ liệu đã được tạo ra:

> show dbs
2

Chúng tôi cũng có thể thấy bộ sưu tập cũng được tạo ra:

> show dbs
3

Cuối cùng, chúng ta có thể nhìn thấy người của chúng ta, người Jo Jo, đã được chèn vào:

> show dbs
4

Là một nhà phát triển Java, bạn có thể thấy những điểm tương đồng giữa tài liệu được lưu trữ trong MongoDB và đối tượng miền của bạn. Trong mã của bạn, người đó có thể sẽ là một lớp người, với các trường nguyên thủy đơn giản, trường mảng và trường địa chỉ.

Vì vậy, thay vì xây dựng

compile 'org.mongodb:mongo-java-driver:2.12.3'
8 của bạn theo cách thủ công như ví dụ trên, bạn có nhiều khả năng sẽ chuyển đổi đối tượng miền của mình thành một DBObject. Tốt nhất là không có lớp DBObject dành riêng cho MongoDB trong các đối tượng tên miền của bạn, vì vậy bạn có thể muốn tạo một PersonAdaptor chuyển đổi đối tượng miền người của bạn thành một DBObject:

> show dbs
5

Như trước đây, một khi bạn có DBObject, bạn có thể lưu cái này vào MongoDB:

> show dbs
6

Bây giờ, bạn đã có tất cả những điều cơ bản để có được các bài kiểm tra trong bài tập3InsertTest để vượt qua.

Lấy lại tài liệu

Bây giờ bạn đã lưu một người vào cơ sở dữ liệu và chúng tôi đã thấy nó trong cơ sở dữ liệu bằng cách sử dụng vỏ, bạn sẽ muốn đưa nó trở lại trong ứng dụng Java của bạn. Trong bài đăng này, chúng tôi sẽ bao gồm những điều cơ bản về việc truy xuất một tài liệu - trong một bài đăng sau đó, chúng tôi sẽ trình bày các truy vấn phức tạp hơn.

Bạn có thể đoán được rằng MongoDB là cơ sở dữ liệu tài liệu mà chúng tôi sẽ không sử dụng SQL để truy vấn. Thay vào đó, chúng tôi truy vấn bằng ví dụ, xây dựng một tài liệu trông giống như tài liệu mà chúng tôi đang tìm kiếm. Vì vậy, nếu chúng tôi muốn tìm kiếm người mà chúng tôi đã lưu vào cơ sở dữ liệu, thì Jo Jo Bloggs, chúng tôi nhớ rằng trường

compile 'org.mongodb:mongo-java-driver:2.12.3'
9 có giá trị của Jo Jo, và chúng tôi tạo một tài liệu phù hợp với hình dạng này:

> show dbs
7

Như bạn có thể thấy, phương thức


    
        org.mongodb
        mongo-java-driver
        2.12.3
    

0 trả về một con trỏ cho kết quả. Vì
compile 'org.mongodb:mongo-java-driver:2.12.3'
9 cần phải là duy nhất, chúng tôi biết rằng nếu chúng tôi tìm kiếm một tài liệu với ID này, chúng tôi sẽ chỉ tìm thấy một tài liệu và nó sẽ là tài liệu chúng tôi muốn:

> show dbs
8

Trước đó, chúng tôi đã thấy rằng các tài liệu chỉ đơn giản là được tạo thành từ các cặp tên/giá trị, trong đó giá trị có thể là bất cứ thứ gì từ một chuỗi đơn giản hoặc nguyên thủy, đến các loại phức tạp hơn như mảng hoặc subdocument. Do đó, trong Java, chúng ta có thể ít nhiều coi DBObject là


    
        org.mongodb
        mongo-java-driver
        2.12.3
    

2. Vì vậy, nếu chúng tôi muốn xem xét các trường của tài liệu chúng tôi đã lấy lại từ cơ sở dữ liệu, chúng tôi có thể nhận được chúng với:

> show dbs
9

Lưu ý rằng bạn sẽ cần phải chuyển giá trị lên


    
        org.mongodb
        mongo-java-driver
        2.12.3
    

3, vì trình biên dịch chỉ biết rằng nó có một

    
        org.mongodb
        mongo-java-driver
        2.12.3
    

4.

Nếu bạn vẫn đang chơi cùng với mã ví dụ, thì bây giờ bạn đã sẵn sàng để thực hiện tất cả các bài kiểm tra trong bài tập

Tổng quan về các thư viện JVM

Cho đến nay tôi đã chỉ cho bạn những điều cơ bản của trình điều khiển Java chính thức, nhưng bạn sẽ nhận thấy rằng nó khá thấp-bạn phải thực hiện nhiều thứ ra khỏi các đối tượng miền của mình và chọc chúng vào DBObjects hình MongoDB, và ngược lại. Nếu đây là mức độ kiểm soát bạn muốn, thì trình điều khiển Java sẽ làm cho điều này dễ dàng cho bạn. Nhưng nếu có vẻ như đây là công việc làm thêm mà bạn không nên làm, thì có rất nhiều lựa chọn khác cho bạn.

Các công cụ mà tôi sắp mô tả tất cả sử dụng trình điều khiển Java MongoDB ở cốt lõi của họ để tương tác với MongoDB. Họ cung cấp một sự trừu tượng cao cấp để chuyển đổi các đối tượng miền của bạn thành các tài liệu MongoDB, đồng thời cũng cung cấp cho bạn một cách để đến trình điều khiển cơ bản cũng như trong trường hợp bạn cần sử dụng nó ở cấp độ thấp hơn.

Morphia

Morphia là một ODM thực sự nhẹ (Mapper tài liệu đối tượng), vì vậy, nó tương tự như các Orms như Hibernate. Các tài liệu có thể có hình dạng khá giống với các đối tượng tên miền Java của bạn, vì vậy ánh xạ này có thể tự động, nhưng Morphia cho phép bạn hướng bản đồ đi đúng hướng.

Morphia là nguồn mở, và có những người đóng góp từ MongoDB. Mã mẫu và tài liệu có thể được tìm thấy ở đây.

Dữ liệu mùa xuân

ODM thường được sử dụng khác là dữ liệu lò xo. Điều này hỗ trợ cơ sở dữ liệu quan hệ và phi quan hệ truyền thống, bao gồm MongoDB. Nếu bạn đã sử dụng Spring trong ứng dụng của mình, đây sẽ là một cách quen thuộc để làm việc.

Như mọi khi với các dự án mùa xuân, có rất nhiều tài liệu thực sự tuyệt vời, bao gồm cả hướng dẫn bắt đầu với mã ví dụ.

Mongojack

Nếu bạn đang làm việc với các dịch vụ web hoặc một cái gì đó khác hỗ trợ JSON và bạn đang sử dụng Jackson để làm việc với dữ liệu này, có lẽ có vẻ là một sự lãng phí . Nhưng Mongojack có thể làm cho công việc của bạn dễ dàng hơn, vì nó được thiết kế để ánh xạ các đối tượng JSON trực tiếp vào MongoDB. Hãy xem mã ví dụ và tài liệu.

Jongo

Đây là một ODM khác có trụ sở tại Jackson, nhưng cung cấp thêm một điều thú vị dưới dạng các truy vấn hỗ trợ theo cách bạn viết chúng vào vỏ. Tài liệu và mã ví dụ có sẵn trên trang web.

Grails MongoDB Gorm

Khung ứng dụng web Grails cũng hỗ trợ ánh xạ quan hệ đối tượng (GORM) của riêng mình, bao gồm hỗ trợ cho MongoDB. Thêm tài liệu cho plugin này có thể được tìm thấy ở đây.

Casbah

Đây là một ODM giống như các công cụ khác được đề cập, nhưng người lái xe Scala được hỗ trợ chính thức cho MongoDB. Giống như các thư viện trước đó, nó sử dụng trình điều khiển Java MongoDB dưới bìa, nhưng nó cung cấp API Scala cho các nhà phát triển ứng dụng để làm việc. Nếu bạn thích làm việc với Scala nhưng đang tìm kiếm một giải pháp không đồng bộ, hãy xem xét ReactiveMongo, một trình điều khiển được hỗ trợ cộng đồng cung cấp các hoạt động không đồng bộ và không chặn.

Các thư viện và công cụ khác

Điều này khác xa với một danh sách rộng lớn và tôi xin lỗi nếu tôi đã để lại một yêu thích. Nhưng chúng tôi đã tổng hợp một danh sách nhiều thư viện khác cho JVM, bao gồm các dự án cộng đồng và các trình điều khiển được hỗ trợ chính thức.

Sự kết luận

Chúng tôi đã đề cập đến những điều cơ bản của việc sử dụng MongoDB từ Java - chúng tôi đã chạm vào MongoDB là gì và bạn có thể tìm hiểu nhiều thông tin chi tiết hơn về nó từ hướng dẫn; Chúng tôi đã cài đặt nó ở đâu đó cho phép chúng tôi chơi với nó; Chúng tôi đã nói một chút về các bộ sưu tập và tài liệu, và những thứ này trông như thế nào trong Java; Và chúng tôi đã bắt đầu chèn mọi thứ vào MongoDB và đưa chúng ra ngoài một lần nữa.

Nếu bạn đã bắt đầu chơi với mã thử nghiệm, bạn có thể tìm thấy nó trong kho GitHub này. Và nếu bạn trở nên tuyệt vọng và trông đủ khó khăn, bạn cũng sẽ tìm thấy câu trả lời ở đó.

Cuối cùng, có nhiều ví dụ về việc sử dụng trình điều khiển Java trong chuyến lưu diễn nhanh và có mã ví dụ trong GitHub, bao gồm các ví dụ để xác thực.

Nếu bạn muốn tìm hiểu thêm, hãy thử khóa học trực tuyến 7 tuần của chúng tôi, phần giới thiệu của MongoDB và Java.

Hãy thử nó và hy vọng bạn sẽ thấy việc sử dụng MongoDB từ Java dễ dàng như thế nào.

Đọc Phần II


Nếu bạn đang tìm kiếm nhiều cách hơn các nguồn lực để học MongoDB, hãy xem bộ bắt đầu của chúng tôi.


Bắt đầu với MongoDB Atlas

Chạy MongoDB trong đám mây miễn phí với MongoDB Atlas. Không cần thẻ tín dụng.

Làm thế nào để MongoDB tích hợp với Java?

Bước 1: Cài đặt gói OpenJDK. ....
Bước 2: Đặt biến môi trường Java_home. ....
Bước 3: Cài đặt MongoDB. ....
Bước 4: Cài đặt IDE hoặc trình soạn thảo. ....
Bước 5: Thiết lập một dự án Java mới. ....
Bước 6: Cài đặt Thư viện máy khách MongoDB cho Java. ....
Bước 7: Sử dụng Thư viện máy khách Java MongoDB. ....
Bước 8: Tạo một bộ sưu tập MongoDB ..

Làm thế nào để MongoDB kết nối với khách hàng?

Làm thế nào để kết nối với MongoDB..
Tạo cơ sở dữ liệu trên MongoDB. Kết nối với vỏ MongoDB. Tạo cơ sở dữ liệu "TestDB". Tạo bộ sưu tập "người dùng" và chèn nó vào "TestDB" ..
Thiết lập người dùng.Kết nối với quản trị viên DB.Tạo quản trị viên người dùng.....
Tạo kết nối với MongoDB trên CPD.Đặt thông tin cần thiết ..

MongoDB có tương thích với Java không?

Để tương tác với MongoDB từ ứng dụng Java của chúng tôi, chúng tôi sẽ sử dụng một phần mềm có tên là Trình điều khiển Java, đây là ứng dụng trình điều khiển MongoDB chính thức và được đề xuất cho ngôn ngữ Java.

MongoDB có sử dụng JDBC không?

MongoDB là một cơ sở dữ liệu định hướng đa nền tảng, đa nền tảng, cung cấp, hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễ dàng.MongoDB làm việc về khái niệm thu thập và tài liệu.Trước khi bạn bắt đầu kết nối MongoDB, bạn cần đảm bảo rằng bạn có trình điều khiển JDBC MongoDB.Before you start connecting MongoDB in you need to make sure that you have MongoDB JDBC driver.