研究ノート@斗斗Spring全家斗
コースの内容は、Spring Family Bucketをプレイしているオタクの時間からのもので、侵入されて削除されました。リンクは次のとおりです。
https://time.geekbang.org/course/intro/100023501
7日目1/2
MongoDBを使用する前の準備
NoSQL
4つのブロック:KVタイプRedisとMemcache、
ドキュメントタイプMongoDBとCouchbase、
列ストレージHBaseとCassandra、
グラフデータベースNeo4j
MongoDBデータベース
Spring Dataを介したサポート
MongoDBJDBCTemplateと同様に、Spring Dataは
JPAリポジトリのようなMongoDBテンプレートを提供し、SpringDataはMongoDBリポジトリを提供します
注釈
@Documentは@Entityと同様である
@Id
各種データシャーディングの複雑さを処理するためにIDに従ってMongoDBの実行自動シャーディング
MongoDBのライブラリと権限を初期化します
ユーザー名とパスワードは最後のメモで構成されています。rootは
最初にコンテナーを起動します
docker start mongo
次にbashを開始し、DBに接続します
docker exec -it mongo bash
mongo -u root -p root
ライブラリspringbucksを作成します(実際にはこのライブラリを使用しますが、システムが自動的に作成します)
use springbucks
行入力に基づいてユーザーと権限を作成する
db.createUser(
{
user: "springbucks",
pwd: "springbucks",
roles: [
{ role: "readWrite", db: "springbucks" }
]
}
SpringでMongoDBにアクセスする
プログラムを実行すると、構成と出力情報
が表示されます。cmdを使用してデータベースに接続すると、ドキュメントデータベースに保存されている挿入情報を確認できます。
MongoTemplateを使用する
MongoDBテンプレートの@Idのアノテーションは、JPAのIdではなくspringframework.data.annotation.Idです。
application.propertiesでspring.data.mongodb.uri =を構成して、データベースを指定します
偽のコード
@SpringBootApplication
@Slf4j
public class MongoDemoApplication implements ApplicationRunner {
@Autowired
private MongoTemplate mongoTemplate;
public static void main(String[] args) {
SpringApplication.run(MongoDemoApplication.class, args);
}
@Bean
public MongoCustomConversions mongoCustomConversions() {
return new MongoCustomConversions(Arrays.asList(new MoneyReadConverter()));
}
@Override
public void run(ApplicationArguments args) throws Exception {
//逻辑代码
···
}
使用MongoRepository
EnableMongoRepositoriesアノテーションを追加して、サポートを有効にします
偽のコード
@Slf4j
@SpringBootApplication
@EnableMongoRepositories
public class MongoRepositoryDemoApplication implements CommandLineRunner {
@Autowired
private CoffeeRepository coffeeRepository;
public static void main(String[] args) {
SpringApplication.run(MongoRepositoryDemoApplication.class, args);
}
@Bean
public MongoCustomConversions mongoCustomConversions() {
return new MongoCustomConversions(Arrays.asList(new MoneyReadConverter()));
}
@Override
public void run(String... args) throws Exception {
//逻辑代码
···
}
CoffeeRepositoryクラス
package geektime.spring.data.mongodemo.repository;
import geektime.spring.data.mongodemo.model.Coffee;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
public interface CoffeeRepository extends MongoRepository<Coffee, String> {
List<Coffee> findByName(String name);
}
余談:MongoCustomConversionsのBeanを注入する理由
MoneyReadConverterメソッドはドキュメントをお金に変換します
SpringBootでSpringDatamongoDBはどのように構成されていますか
スプリングブートautoconfigの
下のデータの下のmongoの下のmongoDataAutoConfiguration
mongoCustomConvertionsが途中で渡され、変換が含まれていないことがわかったため、自分で定義した変換を渡せば置き換えることができます。
また、ConditionalOnMissingBeanアノテーションでマークされています。つまり、デフォルトで使用される変換を含まないBeanはありません。