まったく新しいストリーム「Spring Frameworkの開発者」が「突然」始まりました。このコースは、新しい学生と、「通常の」Javaおよびエンタープライズについてすでに学習していない学生の間で非常に人気がありました。 それで、もし興味があれば、 オープンレッスンのために私たちのところに来て、そしてもちろん、このトピックに関する興味深い資料を共有してください。
Spring Data MongoDBチュートリアル翻訳
投稿者:Anand Kumar
行こう!
今日の世界では、できるだけ早くアプリケーションを作成して実行することが非常に重要です。 また、アプリケーションは開発と保守が容易でなければなりません。
Springは、このようなフレームワークであり、他の多くの異なるフレームワークとの統合を容易にし、Springを使用したアプリケーション開発を簡素化します。 そのような統合の1つは、SpringとMongoDBの統合です。
![](https://habrastorage.org/webt/nb/mx/ey/nbmxeyxhok6yyrwovmk9vfkqgv4.png)
1.はじめに
このレッスンでは、最も有名なSpring javaフレームワークと最も有名なNoSQLデータベース管理システム(DBMS)MongoDBの組み合わせについて説明します。 MongoDBは、JSONのような形式でデータを保存するドキュメント指向のNoSQL DBMSです。
Spring DataとMongoDBの統合はSpringによって提供され、両者と開発者の利便性の相互作用を促進し、挿入、更新、削除のために多くのクエリを書く必要を排除します。
以下は、Spring Data MongoDBプロジェクトによって提供される機能の一部です。
- Spring Dataでは、@ ConfigurationクラスとXML構成の両方を使用できます。
- Data Access Spring例外階層は、例外を変換するために使用されます。
- Java POJOとMongoDBドキュメント間の統合マッピング。
- MongoTemplateクラス。一般的なMongoDB操作の使用を簡素化します。
- MongoTemplateに加えて、MongoReaderクラスとMongoWriterクラスを使用して、低レベルのレンダリングを行うことができます。
テクノロジーを理解する最良の方法は、実際にそれを使用することです。これがまさに私たちが今やろうとしていることです。
Spring Data MongoDBの詳細を学ぶための簡単なプログラムを作成しましょう。
2.テクノロジーとツール
プログラムの作成に使用するテクノロジーとツールを見てみましょう。
- Eclispe Oxygen.2リリース(4.7.2)
- Java-バージョン9.0.4
- Gradle-4.6
- MongoDBサーバー-3.6
- MongoCompass-3.6
- SpringDataMongoDB-2.0.5-RELEASE
3.プロジェクトの構造
プロジェクトの構造は次のようになります。
![](https://habrastorage.org/webt/ot/f3/_j/otf3_jvoeuqufrnqzfoh4tz3qms.jpeg)
Spring Data MongoDBのプロジェクト構造
gradleプロジェクトは上記の構造になります。 pom.xmlの場合、プロジェクトの構造はわずかに異なります。
4.プログラム
このプログラムの一環として、以下のタスクを完了しようとします。
- MongoDBでのオブジェクトの保存
- MongoDBでオブジェクトを更新する
- MongoDBからオブジェクトを削除する
- MongoDBからすべてのオブジェクトを取得する
プログラムのすべてのコンポーネントを分析しましょう。 まず、プログラムに必要な依存関係とjarファイルから始めます。
4.1グラドル
Gradleを使用して、プログラムの一部としてビルドします。
build.gradle
ファイルは次のようになります。
apply plugin: 'java' repositories { mavenCentral() } dependencies { compile group: 'org.springframework.data', name: 'spring-data-mongodb', version: '2.0.5.RELEASE' implementation 'com.google.guava:guava:23.0' testImplementation 'junit:junit:4.12' }
上記の
build.gradle
ファイルでは、
apply plugin: 'java'
という行がインストールするプラグインを示しています。 私たちの場合、これはJavaプラグインです。
repositories{}
タグは、依存関係をプルするリポジトリを報告します。 依存するjarファイルをプルアップするために、
mavenCentral
を選択し
mavenCentral
た。 jcenterを使用して、対応する依存jarファイルをプルアップすることもできます。
dependencies {}
タグは、プロジェクトにプルアップする必要があるjarファイルに関する必要なデータを提供するために使用されます。
4.2 MongoDBの構成
MongoDB構成を使用するには、
AbstractMongoConfiguration
クラスを実装する必要があります。
MongoConfig.java
クラスは、次のようになります。 ここでは、xmlの代わりに注釈を使用します。 ただし、XMLを使用して構成を構成することもできます。
MongoConfig.javaクラスの実装
package com.tutorial.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import com.mongodb.MongoClient; @Configuration public class MongoConfig extends AbstractMongoConfiguration { @Override public String getDatabaseName() { return "local"; } @Override @Bean public MongoClient mongoClient() { return new MongoClient("127.0.0.1"); } }
@Configuration
、
MongoConfig.java
クラスを構成クラスとして定義するために使用されます。
@Bean
は
MongoClient
定義し
MongoClient
。
4.3モデルクラス
次に、モデルのクラスを検討します。
student.java
は、NameやAgeなど、Studentの属性を含むモデルクラスとして使用します。
Student.java
モデル
Student.java
、POJOをMongoDBコレクションにマップするために使用されます。
学生モデルクラス
package com.tutorial.model; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "students") public class Student { public Student(String studentName, int studentAge) { this.studentName = studentName; this.studentAge = studentAge; } @Id private String id; String studentName; int studentAge; public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public int getStudentAge() { return studentAge; } public void setStudentAge(int studentAge) { this.studentAge = studentAge; } @Override public String toString() { return String.format( "Student[id=%s, studentName='%s', studentAge="+studentAge+"]", id, studentName); } }
@Document
はドキュメントを定義します。
collection
プロパティは、コレクションの照合に使用されるコレクションを決定します。 コレクションの一部として参照されるすべての属性は、POJOクラスでアクセス可能でなければなりません。
@Id
はコレクション識別子を定義します。
4.4 CRUD操作
MongoDBからのデータの保存、更新、削除、取得など、CRUD操作(作成、読み取り、更新、削除の略)を実行するには、
MongoOperations
を使用し
MongoOperations
。
次に、
MongoDBPOperations.java
クラスを見てみましょう。 このクラスには、CRUD操作のすべてのメソッドの実装が含まれています。
CRUD操作を実行するために使用されるMongoDBPOperationsクラス
package com.tutorial; import java.util.List; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import com.tutorial.model.Student; public class MongoDBPOperations { public void saveStudent(MongoOperations mongoOperation, Student student) { mongoOperation.save(student); System.out.println("Student saved successfully"); // student object got created with id. System.out.println("student : " + student); } public void searchStudent(MongoOperations mongoOperation, String critera,String value) { // query to search student Query searchStudent = new Query(Criteria.where(critera).is(value)); // find student based on the query Student resultStudent = mongoOperation.findOne(searchStudent, Student.class); System.out.println("Student found!!"); System.out.println("Student details: " + resultStudent); } public void updateStudent(MongoOperations mongoOperation, String critera,String value, String updateCriteria, String updateValue) { // query to search student Query searchStudent = new Query(Criteria.where(critera).is(value)); mongoOperation.updateFirst(searchStudent, Update.update(updateCriteria, updateValue), Student.class); System.out.println("Student got updated successfully"); } public void getAllStudent(MongoOperations mongoOperation) { List listStudent = mongoOperation.findAll(Student.class); for(Student student:listStudent) { System.out.println("Student = " + student); } } public void removeStudent(MongoOperations mongoOperation, String critera,String value) { Query searchStudent = new Query(Criteria.where(critera).is(value)); mongoOperation.remove(searchStudent, Student.class); System.out.println("Student removed successfully!! "); } }
Javaプログラムの最も重要なクラスは、
main
メソッドを含むクラスです。
4.5アプリケーションクラス
mainメソッドを含むメインクラスは
Application.java
クラスです。 このクラスを使用して、
MongoDBPOperations
クラスからメソッドを呼び出します。
MongoDBPOperationsクラスのメソッドを呼び出すためのアプリケーションクラス
package com.tutorial; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import com.tutorial.config.MongoConfig; import com.tutorial.model.Student; public class Application { public static void main (String[] args) { // For Annotation ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); MongoDBPOperations ops = new MongoDBPOperations(); Student student = new Student("John", 15); //save student ops.saveStudent(mongoOperation, student); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); //update student based on criteria ops.updateStudent(mongoOperation, "StudentName", "John", "studentAge", "18"); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); //remove student based on criteria ops.removeStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); } }
Application.java
クラスで実行される操作を順を追って見てみましょう。
-
ApplicationContext
を作成しApplicationContext
。 これは、構成をダウンロードする必要があるためです。 - さらに、
MongoOperations
オブジェクトがMongoOperations
れ、MongoTemplate
コンポーネントがロードMongoOperations
れます。 -
MongoDBOperations
オブジェクトは、さまざまなMongoOperation
操作を実行するメソッドへのアクセスを提供します。 - さらに、名前がJohnで15歳のStudentオブジェクトが作成されました。
-
saveMethod
クラスのsaveMethod
メソッドを呼び出し、必要なパラメーターを渡してオブジェクトをデータベースに保存します。 - 同様に、さまざまな
MongoDBOperations
メソッドを1つずつ呼び出します。
4.6プログラムの開始
最後に、プログラムをJavaアプリケーションとして実行します。 Application.java-> Run as-> Java Applicationを右クリックします。
次の結果がコンソールに表示されます。
![](https://habrastorage.org/webt/ue/vs/bn/uevsbnjunkbqehapgwio4uzer4i.jpeg)
プログラム開始後のコンソール出力
次に、オブジェクトを削除するコマンドをコメントアウトしましょう。 MongoDBはデータを正常に保存します。
また、以下に示すように、オブジェクトを削除する行をコメントアウトしましょう。
削除方法をコメント化した後のクラスアプリケーション
package com.tutorial; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import com.tutorial.config.MongoConfig; import com.tutorial.model.Student; public class Application { public static void main (String[] args) { // For Annotation ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); MongoDBPOperations ops = new MongoDBPOperations(); Student student = new Student("John", 15); //save student ops.saveStudent(mongoOperation, student); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); //update student based on criteria ops.updateStudent(mongoOperation, "StudentName", "John", "studentAge", "18"); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); //remove student based on criteria //ops.removeStudent(mongoOperation, "studentName", "John"); // get all the students //ops.getAllStudent(mongoOperation); } }
プログラムを変更したら、再起動しましょう。 コンソールに以下が表示されます。
![](https://habrastorage.org/webt/a8/sc/lv/a8sclvihnd6fkwi9igu92f8ddqk.jpeg)
削除操作がコメント化されている場合のコンソール
削除コマンドにコメントを付けた結果、MongoDBはデータを保存するため、次のようになります。
![](https://habrastorage.org/webt/yb/8p/to/yb8ptodba8b2ygsony4gz1nvhnu.jpeg)
保存および更新コマンド後のMongoDB出力
5. Eclipseプロジェクトをダウンロードします
この例のソースコード全体をここからダウンロードできます。
終わり
いつものように、私たちはここで質問やコメントを待っているか、 ユーリに行って、聞くだけでなく周りに尋ねることもできる公開レッスンを行っています。