MongoDB

All lectures for UZ purposes
Daraja, Dars
Mavjud

MongoDB - bu ochiq kodli NoSQL hujjatli ma'lumotlar bazasi bo'lib, u an'anaviy jadval asosidagi ma'lumotlar o'rniga JSON-ga o'xshash sxemani ishlatadi. Spring Boot MongoDB bilan ishlash uchun bir necha qo'shimcha vositalarni o'z ichiga oladi, jumladan spring-boot-starter-data-mongodb va spring-boot-starter-data-mongodb-reactive "starter"larini.

MongoDB ma'lumotlar bazasiga ulanish

MongoDB ma'lumotlar bazalariga kirish uchun org.springframework.data.mongodb.MongoDatabaseFactory avtokonfiguratsiya qilingan nusxasini kiritish mumkin. Standart holatda nusxa mongodb://localhost/test manzili orqali MongoDB serveriga ulanishga harakat qiladi. Quyidagi misolda MongoDB ma'lumotlar bazasiga qanday ulanish ko'rsatilgan:

Java
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import org.springframework.data.mongodb.MongoDatabaseFactory; import org.springframework.stereotype.Component; @Component public class MyBean { private final MongoDatabaseFactory mongo; public MyBean(MongoDatabaseFactory mongo) { this.mongo = mongo; }  // ...  public MongoCollection<Document> someMethod() { MongoDatabase db = this.mongo.getMongoDatabase(); return db.getCollection("users"); } } 
Kotlin
import com.mongodb.client.MongoCollection import org.bson.Document import org.springframework.data.mongodb.MongoDatabaseFactory import org.springframework.stereotype.Component @Component class MyBean(private val mongo: MongoDatabaseFactory) {  // ...  fun someMethod(): MongoCollection<Document> { val db = mongo.mongoDatabase return db.getCollection("users") } } 

Agar siz o'zingizning MongoClientni aniqlagan bo'lsangiz, u mos MongoDatabaseFactoryni avtokonfiguratsiya qilish uchun ishlatiladi.

Avtokonfiguratsiya qilingan MongoClient MongoClientSettings bean yordamida yaratiladi. Agar siz o'z MongoClientSettingsni aniqlagan bo'lsangiz, u o'zgartirilmasdan ishlatiladi va spring.data.mongodb xususiyatlari e'tiborsiz qoladi. Aks holda, MongoClientSettings avtomatik ravishda sozlanadi va unga spring.data.mongodb xususiyatlari qo'llaniladi. Har qanday holatda, siz MongoClientSettings konfiguratsiyasini nozik sozlash uchun bitta yoki bir nechta MongoClientSettingsBuilderCustomizer beanlarini e'lon qilishingiz mumkin. Har biri MongoClientSettingsni qurish uchun ishlatiladigan MongoClientSettings.Builder orqali tartib bilan chaqiriladi.

URL manzilini o'zgartirish va konfiguratsiyaga qo'shimcha parametrlarni, masalan, replica set qo'shish uchun spring.data.mongodb.uri xususiyatini o'rnatishingiz mumkin, quyidagi misolda ko'rsatilganidek:

Properties
spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:12345,mongo2.example.com:23456/test
Yaml
spring:
  data:
    mongodb:
      uri: "mongodb://user:secret@mongo1.example.com:12345,mongo2.example.com:23456/test"

Boshqa tomondan, alohida xususiyatlar orqali ulanish tafsilotlarini belgilashingiz mumkin. Masalan, application.properties faylida quyidagi parametrlarga e'lon qilish mumkin:

Properties
spring.data.mongodb.host=mongoserver.example.com
spring.data.mongodb.port=27017
spring.data.mongodb.database=test
spring.data.mongodb.username=user
spring.data.mongodb.password=secret
Yaml
spring:
  data:
    mongodb:
      host: "mongoserver.example.com"
      port: 27017
      database: "test"
      username: "user"
      password: "secret"
Agar spring.data.mongodb.port belgilangan bo'lmasa, standart qiymat 27017 ishlatiladi. Avvalgi misoldan bu qatorni olib tashlash mumkin.
Agar Spring Data MongoDB ishlatilmasa, avtokonfiguratsiya qilingan MongoDatabaseFactory o'rniga MongoClient beanini kiritishingiz mumkin. Agar MongoDB bilan ulanish jarayonini to'liq nazorat qilmoqchi bo'lsangiz, qo'shimcha ravishda o'z MongoDatabaseFactory yoki MongoClient beanini e'lon qilishingiz mumkin.
SSL protokoli uchun reaktiv drayver ishlatilayotganda Netty framework kerak bo'ladi. Agar Netty framework mavjud bo'lsa va ishlatiladigan fabrika hali o'rnatilmagan bo'lsa, avtokonfiguratsiya bu fabrikani avtomatik tarzda sozlaydi.

MongoTemplate

Spring Data MongoDB > JdbcTemplatega juda o'xshash tuzilishga ega bo'lgan MongoTemplate klassini taqdim etadi. JdbcTemplateda bo'lgani kabi, Spring Boot avtomatik ravishda quyida ko'rsatilgandek injection uchun bean qo'shadi:

Java
import com.mongodb.client.MongoCollection; import org.bson.Document; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Component; @Component public class MyBean { private final MongoTemplate mongoTemplate; public MyBean(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; }  // ...  public MongoCollection<Document> someMethod() { return this.mongoTemplate.getCollection("users"); } } 
Kotlin
import com.mongodb.client.MongoCollection import org.bson.Document import org.springframework.data.mongodb.core.MongoTemplate import org.springframework.stereotype.Component @Component class MyBean(private val mongoTemplate: MongoTemplate) {  // ...  fun someMethod(): MongoCollection<Document> { return mongoTemplate.getCollection("users") } } 

Spring Data MongoDB Repositoriyalari

Spring Data MongoDB uchun repositorylarni qo'llab-quvvatlash vositalarini o'z ichiga oladi. JPA uchun repositorylar bilan bir xil bo'lib, asosiy prinsip - bu so'rovlar avtomatik ravishda metod nomlariga asoslangan holda quriladi.

Aslida, Spring Data JPA va Spring Data MongoDB bir xil umumiy infratuzilmaga ega. Avvalgi maqolada keltirilgan JPA misolini olish va, agar City endi MongoDB ma'lumotlari klassi bo'lsa, JPA obyekti @Entity annotatsiyasi bilan emas, quyidagi misolda ko'rsatilgandek xuddi shunday ishlaydi:

Java
import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.repository.Repository; public interface CityRepository extends Repository<City, Long> { Page<City> findAll(Pageable pageable); City findByNameAndStateAllIgnoringCase(String name, String state); } 
Kotlin
import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.repository.Repository interface CityRepository : Repository<City?, Long?> { fun findAll(pageable: Pageable?): Page<City?>? fun findByNameAndStateAllIgnoringCase(name: String?, state: String?): City? } 
Hujjatlarni skanerlash joylarini @EntityScan annotatsiyasi yordamida sozlash mumkin.

Ichki Mongo tizimi

Spring Boot ichki Mongo tizimi uchun avtokonfiguratsiyani taqdim etadi. Bu Spring Boot ilovangizda ishlatish uchun, de.flapdoodle.embed:de.flapdoodle.embed.mongoga bog'liq rivojlanish qo'shing va spring.mongodb.embedded.version xususiyatini ilovaning ishlab chiqarish muhitida foydalanadigan MongoDB versiyasiga moslang.

Standart yuklash konfiguratsiyasi ichki Mongo tizimi versiya klassida keltirilgan aksariyat versiyalar, shuningdek, ba'zi boshqa versiyalarga kirishga imkon beradi. Foydalanish imkoniyatiga ega bo'lmagan versiyani sozlash serverni yuklashga urinishda xato hosil qiladi. Bunday xatolarni tegishlicha sozlangan DownloadConfigBuilderCustomizer beanini aniqlab tuzatish mumkin.

Mongo tinglaydigan portni konfiguratsiyaga spring.data.mongodb.port xususiyatini o'rnatib qo'shishingiz mumkin. Tasodifiy belgilanadigan bo'sh portdan foydalanish uchun 0 qiymatini ishlating. MongoAutoConfiguration yordamida yaratilgan MongoClient avtomatik ravishda tasodifiy belgilanadigan portdan foydalanish uchun sozlanadi.

Agar siz maxsus portni sozlamasangiz, ichki qo'llab-quvvatlash vositalari 27017 o'rniga tasodifiy portdan foydalanadilar.

Agar classpathda SLF4J mavjud bo'lsa, Mongo tomonidan yaratilgan chiqishlar avtomatik ravishda org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongo nomli loglash menejeriga yo'naltiriladi.

Mongo nusxasining konfiguratsiyasini va loglarni yo'naltirishni boshqarish uchun o'z IMongodConfig va IRuntimeConfig beanlaringizni e'lon qilishingiz mumkin. Yuklash konfiguratsiyasini DownloadConfigBuilderCustomizer beanini e'lon qilish orqali sozlashingiz mumkin.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION