Spring Data MongoDBの紹介

すべての人に良い一日を!



まったく新しいストリーム「Spring Frameworkの開発者」が「突然始まりました。このコースは、新しい学生と、「通常の」Javaおよびエンタープライズについてすでに学習していない学生の間で非常に人気がありました。 それで、もし興味があれば、 オープンレッスンのために私たちのところに来て、そしてもちろん、このトピックに関する興味深い資料を共有してください。



Spring Data MongoDBチュートリアル翻訳

投稿者:Anand Kumar



行こう!



今日の世界では、できるだけ早くアプリケーションを作成して実行することが非常に重要です。 また、アプリケーションは開発と保守が容易でなければなりません。



Springは、このようなフレームワークであり、他の多くの異なるフレームワークとの統合を容易にし、Springを使用したアプリケーション開発を簡素化します。 そのような統合の1つは、SpringとMongoDBの統合です。







1.はじめに



このレッスンでは、最も有名なSpring javaフレームワークと最も有名なNoSQLデータベース管理システム(DBMS)MongoDBの組み合わせについて説明します。 MongoDBは、JSONのような形式でデータを保存するドキュメント指向のNoSQL DBMSです。

Spring DataとMongoDBの統合はSpringによって提供され、両者と開発者の利便性の相互作用を促進し、挿入、更新、削除のために多くのクエリを書く必要を排除します。



以下は、Spring Data MongoDBプロジェクトによって提供される機能の一部です。



  1. Spring Dataでは、@ ConfigurationクラスとXML構成の両方を使用できます。
  2. Data Access Spring例外階層は、例外を変換するために使用されます。
  3. Java POJOとMongoDBドキュメント間の統合マッピング。
  4. MongoTemplateクラス。一般的なMongoDB操作の使用を簡素化します。
  5. MongoTemplateに加えて、MongoReaderクラスとMongoWriterクラスを使用して、低レベルのレンダリングを行うことができます。


テクノロジーを理解する最良の方法は、実際にそれを使用することです。これがまさに私たちが今やろうとしていることです。



Spring Data MongoDBの詳細を学ぶための簡単なプログラムを作成しましょう。



2.テクノロジーとツール



プログラムの作成に使用するテクノロジーとツールを見てみましょう。



  1. Eclispe Oxygen.2リリース(4.7.2)
  2. Java-バージョン9.0.4
  3. Gradle-4.6
  4. MongoDBサーバー-3.6
  5. MongoCompass-3.6
  6. SpringDataMongoDB-2.0.5-RELEASE


3.プロジェクトの構造



プロジェクトの構造は次のようになります。





Spring Data MongoDBのプロジェクト構造



gradleプロジェクトは上記の構造になります。 pom.xmlの場合、プロジェクトの構造はわずかに異なります。



4.プログラム



このプログラムの一環として、以下のタスクを完了しようとします。



  1. MongoDBでのオブジェクトの保存
  2. MongoDBでオブジェクトを更新する
  3. MongoDBからオブジェクトを削除する
  4. 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



クラスで実行される操作を順を追って見てみましょう。



  1. ApplicationContext



    を作成しApplicationContext



    。 これは、構成をダウンロードする必要があるためです。
  2. さらに、 MongoOperations



    オブジェクトがMongoOperations



    れ、 MongoTemplate



    コンポーネントがロードMongoOperations



    れます。
  3. MongoDBOperations



    オブジェクトは、さまざまなMongoOperation



    操作を実行するメソッドへのアクセスを提供します。
  4. さらに、名前がJohnで15歳のStudentオブジェクトが作成されました。
  5. saveMethod



    クラスのsaveMethod



    メソッドを呼び出し、必要なパラメーターを渡してオブジェクトをデータベースに保存します。
  6. 同様に、さまざまなMongoDBOperations



    メソッドを1つずつ呼び出します。


4.6プログラムの開始



最後に、プログラムをJavaアプリケーションとして実行します。 Application.java-> Run as-> Java Applicationを右クリックします。



次の結果がコンソールに表示されます。





プログラム開始後のコンソール出力



次に、オブジェクトを削除するコマンドをコメントアウトしましょう。 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); } }
      
      





プログラムを変更したら、再起動しましょう。 コンソールに以下が表示されます。





削除操作がコメント化されている場合のコンソール



削除コマンドにコメントを付けた結果、MongoDBはデータを保存するため、次のようになります。





保存および更新コマンド後のMongoDB出力



5. Eclipseプロジェクトをダウンロードします



この例のソースコード全体をここからダウンロードできます



終わり



いつものように、私たちはここで質問やコメントを待っているか、 ユーリに行って聞くだけでなく周りに尋ねることもできる公開レッスンを行っています。



All Articles