spring boot項目におけるMongoDBの使用方法
前言
MySQLデータベースが使いやすいことはよく知られていますが、データ量が千万以上になりました。フィールドを増やすのはとても苦痛です。これはMongoDBには存在しません。フィールドはどのように加えたいのですか?だから、spring-bootでMongoDBを使いたいという考えがあります。Gibbではspring-projectにMongDBを使うというリンクがあります。
依存
実体類は一つだけ@Idを追加すればいいです。
関連付け
MongoDBはspring-bootでは繋がりがないので、MySQLで関連している@ManyToOneなどの注釈は使えなくなります。
私がテストした結果、BlogエンティティクラスにUserオブジェクトを導入すれば、Blogを保存する際、UserオブジェクトもBlogに保存されます。以下のようになります。
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考となる学習価値を持っています。質問があれば、メッセージを書いて交流してください。ありがとうございます。
参照
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-mongodb
MySQLデータベースが使いやすいことはよく知られていますが、データ量が千万以上になりました。フィールドを増やすのはとても苦痛です。これはMongoDBには存在しません。フィールドはどのように加えたいのですか?だから、spring-bootでMongoDBを使いたいという考えがあります。Gibbではspring-projectにMongDBを使うというリンクがあります。
依存
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
// , demo , mongodb , , timeout, mongodb ,
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
</dependency>
設定実体類は一つだけ@Idを追加すればいいです。
import org.springframework.data.annotation.Id;
public class User {
@Id
private String id;
private String username;
// getter, setter
}
データベースの設定
spring:
freemarker:
template-loader-path:
- file:./templates
data:
mongodb:
database: dbname # , ,
host:
password:
uri:
RepositoryはMongoRepositoryを継承しています。追跡コードは、MongoRepositoryが継承しているのがPaging AndSortingRepositoryです。だから、改ページなどの簡単な方法も直接に使えるので、とても便利です。
public interface UserRepository extends MongoRepository<User, String> {
User findByUsername(String username);
}
spring-dataはどう使いますか?ここはどう使いますか?関連付け
MongoDBはspring-bootでは繋がりがないので、MySQLで関連している@ManyToOneなどの注釈は使えなくなります。
私がテストした結果、BlogエンティティクラスにUserオブジェクトを導入すれば、Blogを保存する際、UserオブジェクトもBlogに保存されます。以下のようになります。
{
"_id" : ObjectId("59cb127b23d8213c8dfdcad9"),
"_class" : "com.example.module.blog.model.Blog",
"title" : "hello world",
"content" : "hello world",
"inTime" : ISODate("2017-09-27T02:52:43.713+0000"),
"user" : {
"_id" : ObjectId("59cb0fec23d8213930c6795a"),
"username" : "tomoya",
"inTime" : ISODate("2017-09-27T02:41:48.402+0000")
}
}
Userのusernameを修正すれば、userの表里のusernameだけが修正されます。blogの表里のuserの対象の中のusernameは変わりません。ですから、ここで関連は一つのidだけをあげて、検索する時はidでアメリカを調べて、もう一つのブロックに入れたほうがいいです。締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考となる学習価値を持っています。質問があれば、メッセージを書いて交流してください。ありがとうございます。
参照
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-mongodb