MongoDB Java’yı Destekliyor mu
MongoDB ve Java ile Başlarken – Crud Operations Öğreticisi
Com’u ayarlayabilirsiniz.Mongodb.MongoteMplate’ın com gibi daha yüksek bir seviyede belirtilmemişse, yazma işlemleri için kullanacağı writeconcern mülkü.Mongodb.Montaj. Mongotemplate’in WriteConcern özelliği ayarlanmadıysa.
Özet
Bu öğreticide, MongoDB ve Java ile nasıl başlayacağınızı keşfedeceğiz. MongoDB’nin Java Driver ve Spring Data MongoDB’yi kullanarak Temel Crud (Oluştur, Okuma, Güncelleme, Sil) işlemlerini kapsayacağız.
Anahtar noktaları:
- Java için MongoDB desteği çok çeşitli özellikler içerir.
- Spring, Java tabanlı @configuration sınıfları veya XML ad alanı kullanarak MongoDB için yapılandırma desteği sağlar.
- MongoteMplate sınıfı, belgeler ve pojolar arasında ortak MongoDB işlemlerini ve nesne eşlemesini gerçekleştirmek için yararlı bir yardımcı programdır.
- Spring’in taşınabilir veri erişimine istisna çevirisi istisna hiyerarşisi desteklenir.
- Spring’in dönüşüm hizmeti, MongoDB’nin özellikli özellikli nesne eşleme ile entegre olur.
- Ek açıklama tabanlı eşleme meta verileri mevcuttur ve diğer formatları desteklemek için genişletilebilir.
- Kalıcılık ve haritalama yaşam döngüsü olayları desteklenir.
- Java tabanlı sorgu, kriterler ve güncelleme DSL’leri sağlanır.
- Özel bulucu yöntemleri dahil olmak üzere depo arayüzlerinin otomatik olarak uygulanması desteklenmektedir.
- Querydsl Entegrasyonu, Tür güvenli sorguları etkinleştirir.
- JPA varlıklarının MongoDB kullanılarak ısrar edilmesine/geri alınmasına izin veren mağazalar arası kalıcılık desteklenir.
- MongoDB entegrasyonu için bir Log4J günlük apenti sağlanır.
- Jeo -uzamsal entegrasyon, jeo -uzamsal verilerle çalışmak için mevcuttur.
Sorular:
- S1: MongoDB Java için hangi özellikleri destekliyor??
- S2: İlkbaharda MongoDB’yi nasıl yapılandırabiliriz?
- S3: Mongotemplate sınıfı nedir??
- S4: Spring, MongoDB operasyonlarında istisnaları nasıl ele alıyor?
- S5: Spring Destek Nesnesi Eşleme ile MongoDB entegrasyonu?
- S6: MongoDB diğer meta veri formatlarını destekleyebilir mi?
- S7: MongoDB, kalıcılığı destekliyor mu ve yaşam döngüsü olaylarını haritalama?
- S8: MongoDB’de Java tabanlı sorgu, kriter ve güncelleme DSL’leri kullanmanın avantajı nedir??
- S9: Spring, depo arayüzlerinde özel bulucu yöntemlerini otomatik olarak uygulayabilir mi??
- S10: MongoDB’de QuerydSL entegrasyonunun yararı nedir?
- S11: MongoDB, mağazalar arası kalıcılık için kullanılabilir mi??
- S12: MongoDB bir Log4J Log Appender mı sağlıyor??
- S13: MongoDB jeo -uzamsal verileri destekliyor mu??
A1: Java için MongoDB desteği, yay yapılandırma desteği, nesne eşleme, istisna çevirisi ve daha fazlası gibi çok çeşitli özellikler içerir.
A2: MongoDB, Java tabanlı @configuration sınıfları veya XML ad alanı kullanılarak baharda yapılandırılabilir.
A3: MongoteMplate sınıfı, ortak MongoDB işlemlerini gerçekleştirerek ve belgeler ve pojolar arasında nesne eşleme sağlayarak verimliliği artıran bir yardımcı sınıftır.
A4: Spring, istisnaları taşınabilir veri erişim istisnası hiyerarşisine çevirir.
A5: Evet, Spring ile MongoDB entegrasyonu, Spring’in Dönüşüm Hizmeti ile entegre edilmiş özellik açısından zengin nesne eşleme içerir.
A6: Evet, MongoDB’deki ek açıklama tabanlı eşleme meta verileri diğer meta veri formatlarını desteklemek için genişletilebilir.
A7: Evet, MongoDB kalıcılığı ve haritalamayı yaşam döngüsü olaylarını destekliyor.
A8: Java tabanlı sorgu, kriterler ve güncelleme DSL’ler.
A9: Evet, Spring, depo arabirimlerinde özel bulucu yöntemlerini otomatik olarak uygulayabilir.
A10: MongoDB’de QuerydSL entegrasyonu, tipte güvenli sorguları sağlar.
A11: Evet, MongoDB, JPA varlıklarının MongoDB kullanılarak ısrar edilmesine/geri alınmasına izin veren mağazalar arası kalıcılığı destekler.
A12: Evet, MongoDB Log4J ile entegrasyon için bir Log4J günlük appenderi sağlar.
A13: Evet, MongoDB jeo -uzamsal verilerle çalışmak için entegrasyon sağlar.
Başlarken
Spring MongoDB desteğine başlamak için MongoDB 1’e ihtiyacınız olacak.4 veya daha yüksek ve Java SE 5 veya daha yüksek. En son üretim sürümünü kullanmanız önerilir (2.0.x Bu yazı itibariyle).
Bir çalışma ortamı kurmak için bu adımları izleyin:
- Çalışan bir MongoDB sunucusu kurun. MongoDB örneğinin nasıl başlatılacağına dair talimatlar için MongoDB Hızlı Başlangıç Kılavuzuna bakın.
- STS’de (Spring Tool Suite) veya diğer entegre geliştirme ortamlarında (IDE) yay tabanlı bir proje oluşturun.
- Projenizin POM’sına Bahar Verileri MongoDB bağımlılığını ekleyin.XML Dosyası:
- Pom’unuzda belirtilen yayın doğru sürümüne sahip olduğunuzdan emin olun.XML:
- Pom’unuza Bahar Kilometre Taşı deposunu ekleyin.XML:
- Log4J günlüğünü Log4J’de hata ayıklamaya ayarlayın.Özellikler Dosyası:
- Basit bir kişi sınıfı oluşturun:
- Çalıştırmak için bir ana uygulama oluşturun:
<bağımlılık> <Grup kimliği>org.Springframework.veri</Grup kimliği> <artifaktli>bahar-veri-mongodb</artifactId> <versiyon>1.1.0.SERBEST BIRAKMAK</sürüm> </bağımlılık>
<özellikler> <bahar.versiyon>3.1.2.SERBEST BIRAKMAK</bahar.versiyon> </özellikler>
<depolar> <depo> <İD>ilkbahar</İD> <isim>Spring Maven kilometre taşı deposu</isim> <url>http: // repo.springsource.org/libs-milestone</url> </depo> </Depolar>
log4j.kategori.org.Springframework.veri.belge.MongoDB = hata ayıklama log4j.ek.stdout.düzen.Dönüşümpater = %d %5p %40.40c:%4L -%m%n
Paket Org.bahar.Mongodb.örnek; genel sınıf kişi { özel dize kimliği; özel dize adı; özel int yaş; Kamu Kişi (String Name, Int Age) { Bu.name = isim; Bu.yaş = yaş; } public String getId () { dönüş kimliği; } public String getName () { dönüş adı; } public int getage () { dönüş yaşı; } @Override public String toString () { "Kişi [id =" + id + ", name =" + name + ", yaş =" + yaş + "]"; } }
Paket Org.bahar.Mongodb.örnek; ithal statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Kriterler.Neresi; İthalat Org.apache.ortak.Kerestecilik.Kayıt; İthalat Org.apache.ortak.Kerestecilik.LogFactory; İthalat Org.Springframework.veri.Mongodb.çekirdek.Mongooperations; İthalat Org.Springframework.veri.Mongodb.çekirdek.Mongotemplate; İthalat Org.Springframework.veri.Mongodb.çekirdek.sorgu.Sorgu; İthalat com.Mongodb.Mongo; public class mongoapp { Özel Statik Final Log = LogFactory.getLog (Mongoapp.sınıf); genel statik void ana (String [] args) istisna atar { Mongooperations Mongoops = yeni Mongotemplate (yeni Mongo (), "Veritabanı"); Mongoops.Insert (yeni kişi ("Joe", 34)); kayıt.Bilgi (Mongoops.Findone (yeni sorgu (nerede ("isim").("Joe"), kişi.sınıf)); } }
MongoDB ve Java ile Başlarken – Crud Operations Öğreticisi
Com’u ayarlayabilirsiniz.Mongodb.MongoteMplate’ın com gibi daha yüksek bir seviyede belirtilmemişse, yazma işlemleri için kullanacağı writeconcern mülkü.Mongodb.Montaj . Mongotemplate’in WriteConcern özelliği ayarlanmadıysa.
MongoDB Java’yı Destekliyor mu
MongoDB desteği, aşağıda özetlenen çok çeşitli özellikler içerir.
- Mongo sürücü örneği ve çoğaltma kümeleri için Java tabanlı @configuration sınıfları veya bir XML ad alanı kullanarak yay yapılandırma desteği
- Ortak Mongo operasyonlarını gerçekleştiren üretkenliği artıran Mongotemplate yardımcı sınıfı. Belgeler ve Pojolar arasında entegre nesne eşlemesi içerir.
- İstisna Çeviri Spring’in Taşınabilir Veri Erişim İstisnası Hiyerarşisi
- Spring’in dönüşüm hizmetiyle entegre olan zengin nesne eşleme özellikleri
- Ek açıklama tabanlı eşleme meta verileri ancak diğer meta veri formatlarını destekleyecek şekilde genişletilebilir
- Kalıcılık ve haritalama yaşam döngüsü olayları
- Java tabanlı sorgu, kriterler ve güncelleme DSL’leri
- Özel bulucu yöntemlerine destek dahil olmak üzere depo arayüzlerinin otomatik uygulaması.
- Türü güvenli sorguları desteklemek için Querydsl entegrasyonu.
- Mağaza Kalıcılık – MongoDB kullanılarak şeffaf bir şekilde ısrar edilmiş/alınan alanları olan JPA varlıklarına destek
- Log4j log appender
- Jeo -uzamsal entegrasyon
Çoğu görev için kendinizi Mongotemplate veya her ikisinin de zengin eşleme işlevselliğini kullanan depo desteğini kullanarak bulacaksınız. MongoteMplate, artan sayaçlar veya geçici CRUD işlemleri gibi işlevselliğe erişmek için aranan yerdir. MongoteMplate ayrıca geri arama yöntemleri sağlar, böylece kuruluş gibi düşük seviyeli API eserlerini tutmanız kolaydır.montaj.DB MongoDB ile doğrudan iletişim kurmak için. Çeşitli API artefaktlarında sözleşmeleri adlandırma amaçlı amaç, MongoDB Java sürücüsündeki tabandaki kişileri kopyalamaktır, böylece mevcut bilginizi Bahar API’larına kolayca eşleştirebilirsiniz.
5.1 Başlarken
Spring MongoDB desteği MongoDB 1 gerektirir.4 veya daha yüksek ve Java SE 5 veya daha yüksek. En son üretim sürümü (2.0.x Bu yazı itibariyle önerilir. Bir çalışma ortamı kurmanın kolay bir yolu, STS’de yay tabanlı bir proje oluşturmaktır.
Önce çalışan bir MongoDB sunucusu kurmanız gerekiyor. Bir MongoDB örneğinin nasıl başlatılacağına dair bir açıklama için MongoDB Hızlı Başlangıç Kılavuzuna bakın. Kurulduktan sonra MongoDB genellikle aşağıdaki komutu yürütme meselesidir: Mongo_home/bin/mongod
STS’de bir bahar projesi oluşturmak için Dosya’ya gidin -> Yeni -> Bahar Şablonu Projesi -> Basit Bahar Yardımcı Projesi -> İstendiğinde Evet’e basın. Ardından Org gibi bir proje ve bir paket adı girin.bahar.Mongodb.örnek.
Sonra pom’a aşağıdakileri ekleyin.XML Bağımlılıklar Bölümü.
org.Springframework.veri bahar-veri-mongodb 1.1.0.SERBEST BIRAKMAK
Ayrıca Pom’daki Spring versiyonunu da değiştirin.xml olmak
3.1.2.SERBEST BIRAKMAK
Ayrıca, Maven için bahar kilometre taşı deposunun yerini POM’a eklemeniz gerekecek.öğenizin aynı seviyesinde olan XML
ilkbahar Spring Maven kilometre taşı deposu http: // repo.springsource.org/libs-milestone
Depo da burada göz atabilir.
Ayrıca, bazı ek bilgileri görmek için günlük seviyesini hata ayıklamaya ayarlamak, Log4J’yi düzenlemek isteyebilirsiniz.mülkler dosyası
log4j.kategori.org.Springframework.veri.belge.MongoDB = hata ayıklama log4j.ek.stdout.düzen.Dönüşümpater = %d %5p %40.40c:%4L -%m%n
Devam etmek için basit bir kişi sınıfı oluşturun
paketi org.bahar.Mongodb.örnek; halk sınıf Kişi < özel String ID; özel Dize adı; özel int yaş; halk Kişi (Dize adı, int yaş) < Bu.name = isim; Bu.yaş = yaş; > halk String getId () < geri dönmek İD; > halk String getName () < geri dönmek isim; > halk int KAPALI () < geri dönmek yaş; > @Override halk String toString () < geri dönmek "Kişi [id hl-string"> ", ad hl-string"> ", yaş hl-string"> "]"; >>
Ve çalıştırmak için ana uygulama
paketi org.bahar.Mongodb.örnek; içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Kriterler.Neresi; içe aktarmak org.apache.ortak.Kerestecilik.Kayıt; içe aktarmak org.apache.ortak.Kerestecilik.LogFactory; içe aktarmak org.Springframework.veri.Mongodb.çekirdek.Mongooperations; içe aktarmak org.Springframework.veri.Mongodb.çekirdek.Mongotemplate; içe aktarmak org.Springframework.veri.Mongodb.çekirdek.sorgu.Sorgu; içe aktarmak com.Mongodb.Mongo; halk sınıf Moğa < özel statik son Günlük günlüğü = logFactory.getLog (Mongoapp.sınıf); halk statik geçersiz Main (String [] args) atış İstisna < MongoOperations mongoOps = yeni Mongotemplate (yeni Mongo (), "veri tabanı"); Mongoops.sokmak(yeni Kişi("Joe", 34)); kayıt.Bilgi (Mongoops.findone (yeni Sorgu (nerede ("isim").dır-dir("Joe")), Kişi.sınıf)); Mongoops.Dropcollection ("kişi"); >>
Bu aşağıdaki çıktıyı üretecektir
10: 01: 32.062 Hata Ayıklama Uygulaması.MongopersistentityIndexcreator: 80 - Sınıf sınıfının analiz edilmesi.bahar.örnek.Dizin bilgisi için kişi. 10: 01: 32.265 Hata Ayıklama Kırılma.veri.Mongodb.çekirdek.Mongotemplate: 631 - DboBject içeren alanları ekleyin: [_class, yaş, isim] Koleksiyonda: Kişi 10: 01: 32,765 Hata Ayıklama Ramework.veri.Mongodb.çekirdek.Mongotemplate: 1243 - Sorgu kullanan Findone: < "name" : "Joe">DB'de.Koleksiyon: Veritabanı.Kişi 10: 01: 32,953 Bilgi Org.bahar.Mongodb.örnek.Mongoapp: 25 - Kişi [id = 4DBBA3C0BE56B7E1B210166, Name = Joe, Age = 34] 10: 01: 32,984 Hata ayıklama.veri.Mongodb.çekirdek.Mongotemplate: 375 - Droped koleksiyonu [Veritabanı.kişi]
Bu basit örnekte bile, dikkate alınması gereken birkaç şey var
- Standart com’u kullanarak Merkezi Mongo, Mongotemplate’in merkezi yardımcı sınıfını somutlaştırabilirsiniz.Mongodb.Mongo nesnesi ve kullanılacak veritabanının adı.
- Haritacı, herhangi bir ek meta veriye ihtiyaç duymadan standart Pojo nesnelerine karşı çalışır (ancak isteğe bağlı olarak bu bilgileri sağlayabilirsiniz. Buraya bakın.).
- Sözleşmeler, kimlik alanını işlemek için kullanılır ve veritabanında saklandığında bir nesne kimliği olarak dönüştürülür.
- Haritalama kuralları alan erişimini kullanabilir. Kişi sınıfının sadece alıcıları olduğunu fark et.
- Yapıcı bağımsız değişken adları, saklanan belgenin alan adlarıyla eşleşiyorsa, nesneyi başlatmak için kullanılacaktır
5.2 Örnek Depo
Kütüphanenin nasıl çalıştığı hakkında bir fikir edinmek için indirebileceğiniz ve oynayabileceğiniz birkaç örnek içeren bir GitHub deposu var.
5.3 MongoDB’ye yayla bağlanma
MongoDB ve Bahar kullanırken ilk görevlerden biri bir com oluşturmaktır.Mongodb.IOC kapsayıcısını kullanarak Mongo nesnesi. Java bazlı fasulye meta veri veya XML bazlı fasulye meta verileri kullanarak bunu yapmanın iki ana yolu vardır. Bunlar aşağıdaki bölümlerde tartışılmaktadır.
XML tabanlı meta veriler yerine Java bazlı fasulye meta verilerini kullanarak yay konteynerinin nasıl yapılandırılacağına aşina olmayanlar için buradaki referans dokümanlarda yüksek seviyeli girişin yanı sıra buradaki ayrıntılı belgelere bakın.
5.3.1 Java tabanlı meta verileri kullanarak bir mongo örneğini kaydetme
Bir com örneğini kaydetmek için Java tabanlı fasulye meta verilerini kullanma örneği.Mongodb.Mongo aşağıda gösterilmiştir
Örnek 5.1. Bir com kaydetmek.Mongodb.Java tabanlı fasulye meta verilerini kullanarak Mongo nesnesi
@Configuration halk sınıf AppConfig < / * * Bir com oluşturmak için Standart Mongo Sürücü API'sını kullanın.Mongodb.Mongo örneği. */ halk @Fasulye Mongo Mongo () atış UnknownhostException < geri dönmek yeni Mongo ("Localhost"); >>
Bu yaklaşım, standart COM’u kullanmanıza izin verir.Mongodb.Mongo API’sı zaten kullanmaya alışık olabileceğiniz, ancak Kodu UnknownHostException ile Kaznetler Kontrol Edilen İstisna. Java tabanlı fasulye meta verileri, nesne bağımlılıklarını ayarlamak için yöntemleri kullandığından, arama kodunu dağınık hale getirdiğinden, kontrol edilen istisnanın kullanımı arzu edilmez.
Bir alternatif, bir com örneğini kaydetmektir.Mongodb.Spring’s Mongofactorybean’ı kullanan konteynerle Mongo örneği . Bir com’u somutlaştırmakla karşılaştırıldığında.Mongodb.Mongo örneği doğrudan, FactoryBean yaklaşımı kontrol edilen bir istisna atmaz ve ayrıca kaptan, @repository ek notu ile açıklanan veri erişim sınıfları için baharın taşınabilir DataAccessException hiyerarşisindeki istisnalara mongoDB istisnalarını tercüme eden bir istisnaTranslator uygulaması sunma avantajına sahiptir. Bu hiyerarşi ve @repository kullanımı, Spring’in DAO destek özelliklerinde açıklanmaktadır.
@Repository ek açıklamalı sınıflarda istisna çevirisini destekleyen Java tabanlı bir fasulye meta verilerinin bir örneği aşağıda gösterilmiştir:
Örnek 5.2. Bir com kaydetmek.Mongodb.Spring’s Mongofactorybean’ı kullanarak Mongo Nesnesi ve Spring’in İstisna Çeviri Desteği
@Configuration halk sınıf AppConfig < / * * Com'u yaratan fabrika fasulyesi.Mongodb.Mongo örneği */ halk @Fasulye Mongofactorybean Mongo () < MongoFactoryBean mongo = yeni MongofactoryBean (); montaj.Sethost ("Localhost"); geri dönmek Mongo; >>
Com’a erişmek için.Mongodb.MongofactoryBean tarafından diğer @conciguration veya kendi sınıflarınızda oluşturulan Mongo nesnesi, “özel @utowired Mongo Mongo;” Field kullanın.
5.3.2 XML tabanlı meta verileri kullanarak bir Mongo örneğini kaydetme
Bir com örneğini kaydetmek için Spring’in geleneksel XML ad alanını kullanabilirsiniz.Mongodb.Konteynerle Mongo, XML genel amaç olduğu için oldukça ayrıntılı olabilir. XML ad alanları, Mongo örneği gibi yaygın olarak kullanılan nesneleri yapılandırmak için daha iyi bir alternatiftir. Mongo ad alanı, bir Mongo örneği sunucusu konumu, çoğaltma setleri ve seçenekler oluşturmak için sizi aldırır.
Mongo ad alanı öğelerini kullanmak için Mongo şemasına başvurmanız gerekecek:
Örnek 5.3. MongoDB’yi yapılandırmak için XML şeması
xmlns="http: // www.Springframework.org/şema/fasulye " XMLNS: XSI="http: // www.W3.org/2001/xmlschema-start " xmlns: bağlam="http: // www.Springframework.org/şema/bağlam " XMLNS: Mongo="http: // www.Springframework.org/şema/veri/mongo " XSI: Şemalokasyon= "http: // www.Springframework.org/şema/bağlam http: // www.Springframework.org/şema/bağlam/yay-bağlam-3.0.XSD http: // www.Springframework.org/schema/data/mongo http: // www.Springframework.org/şema/veri/mongo/bahar-üçlü 1.0.XSD http: // www.Springframework.org/şema/fasulye http: // www.Springframework.org/şema/fasulye/yay-3-3.0.XSD ">
Mongooptions ile daha gelişmiş bir yapılandırma aşağıda gösterilmiştir (bunların önerilen değerler olmadığını unutmayın)
Örnek 5.4. Bir com yapılandırmak için xml şeması.Mongodb.Mongoooptions ile Mongo Nesnesi
ev sahibi="Localhost" liman="27017"> Evde bağlantılar="8" Konfonk-Block-Connection-MultiPlier="4" Bağlantı zaman aşımı="1000" Maksimum Bekleme Zamanı="1500>" otomatik bağlantı retri="doğru" soket tutma="doğru" Soket-zaman aşımı="1500" köle="doğru" yazma numarası="1" Yazma Timeout="0" Write-fsync="doğru"/>
Çoğaltma setlerini kullanan bir yapılandırma aşağıda gösterilmiştir.
Örnek 5.5. COM’u yapılandırmak için XML şeması.Mongodb.Çoğaltma setleriyle Mongo nesnesi
İD="ReplicasetMongo" kopya seti="127.0.0.1: 27017, Localhost: 27018 "/>
5.3.3 MongoDBFactory Arayüzü
Com iken.Mongodb.Mongo, belirli bir MongoDB veritabanı örneğine bağlanan MongoDB Sürücü API’sının giriş noktasıdır. Veritabanı adı ve isteğe bağlı bir kullanıcı adı ve şifre gibi ek bilgiler gerektirir. Bu bilgilerle bir com alabilirsiniz.Mongodb.DB nesnesi ve belirli bir MongoDB veritabanı örneğinin tüm işlevlerine erişin. Bahar kuruluşu sağlar.Springframework.veri.Mongodb.çekirdek.MongoDBFactory Arayüzü, veritabanına bağlı bağlantıya bağlı olarak aşağıda gösterilmiştir.
halk arayüz MongoDBFactory < DB getDb() atış DataAccessException; Db getdb (dize dbname) atış DataAccessException; >
Aşağıdaki bölümlerde, MongoDBFactory arayüzünün bir örneğini yapılandırmak için Contiainer’ı Java veya XML tabanlı meta verilerle nasıl kullanabileceğinizi göstermektedir. Buna karşılık, MongoteMplate’yi yapılandırmak için MongoDBFactory örneğini kullanabilirsiniz.
Sınıf org.Springframework.veri.Mongodb.çekirdek.Simpremongodbfactory, MongoDBFactory arayüzünü uygular ve standart bir com ile oluşturulur.Mongodb.Mongo örneği, veritabanı adı ve isteğe bağlı bir kuruluş.Springframework.veri.kimlik doğrulama.Usercredtials yapıcı argümanı.
Mongotemplate örneği oluşturmak için IOC kapsayıcısını kullanmak yerine, bunları aşağıda gösterildiği gibi standart Java kodunda kullanabilirsiniz.
halk sınıf Moğa < özel statik son Günlük günlüğü = logFactory.getLog (Mongoapp.sınıf); halk statik geçersiz Main (String [] args) atış İstisna < MongoOperations mongoOps = yeni Mongotemplate (Yeni SimpleMongodBFactory (yeni Mongo (), "Veritabanı")); Mongoops.sokmak(yeni Kişi("Joe", 34)); kayıt.Bilgi (Mongoops.findone (yeni Sorgu (nerede ("isim").dır-dir("Joe")), Kişi.sınıf)); Mongoops.Dropcollection ("kişi"); >>
Bold Kod, SimpremongodBFactory kullanımını vurgular ve Başlarken Bölümde gösterilen liste arasındaki tek farktır.
5.3.4 Java tabanlı meta verileri kullanarak bir MongoDBFactory örneği kaydetmek
Bir MongoDBFactory örneğini kapsayıcı ile kaydetmek için, önceki kod listesinde vurgulananlara çok benzeyen kod yazarsınız. Basit bir örnek aşağıda gösterilmiştir
@Configuration halk sınıf Mongoconfiguration < halk @Fasulye MongoDBFactory MongoDBFactory () atış İstisna < geri dönmek yeni Simpremongodbfactory (yeni Mongo (), "veri tabanı"); >>
Kullanıcı adını ve şifreyi tanımlamak için bir kuruluş örneği oluşturun.Springframework.veri.kimlik doğrulama.Usercredtials ve aşağıda gösterildiği gibi yapıcıya iletin. Bu liste ayrıca MongoDBFactory Kayıt kullanmayı, konteynerle birlikte bir Mongotemplate örneğini gösteriyor.
@Configuration halk sınıf Mongoconfiguration < halk @Fasulye MongoDBFactory MongoDBFactory () atış İstisna < UserCredentials userCredentials = yeni Kullanıcı kimlik bilgileri("Joe", "gizli"); geri dönmek yeni Simpremongodbfactory (yeni Mongo (), "veri tabanı", Kullanıcı kimlik bilgileri); > halk @Fasulye Mongotemplate Mongotemplate () atış İstisna < geri dönmek yeni MongotEmplate (Mongodbfactory ()); >>
5.3.5 XML tabanlı meta verileri kullanarak bir MongoDBFactory örneğini kaydetme
Mongo ad alanı. Basit kullanım aşağıda gösterilmiştir
dbname="veri tabanı">
Yukarıdaki örnekte bir com.Mongodb.Mongo örneği, varsayılan ana bilgisayar ve bağlantı noktası numarası kullanılarak oluşturulur. Kapsayıcıya kaydedilen SimpremongodBFactory, kimlik özelliği için bir değer belirtilmedikçe ‘Mongodbfactory’ kimliği ile tanımlanır.
Altta yatan com için ana bilgisayar ve bağlantı noktası da sağlayabilirsiniz.Mongodb.Veritabanı için kullanıcı adı ve şifreye ek olarak, aşağıda gösterildiği gibi Mongo örneği.
İD="Başka bir Congodbfactory" ev sahibi="Localhost" liman="27017" dbname="veri tabanı" Kullanıcı adı="Joe" şifre="gizli"/>
COM’da ek seçenekler yapılandırmanız gerekiyorsa.Mongodb.SimpleMongodBFactory oluşturmak için kullanılan Mongo örneği, aşağıda gösterildiği gibi Mongo-Ref özniteliğini kullanarak mevcut bir fasulyeye başvurabilirsiniz. Başka bir yaygın kullanım desenini göstermek için, bu liste yapılandırmayı parametrelemek ve Mongotemplate oluşturmak için bir özellik yer tutucunun kullanımını gösterir .
konum="ClassPath:/Com/MyApp/MongoDB/Config/Mongo.özellikler"/> ev sahibi="$" liman="$"> Evde bağlantılar="$" Konfonk-Block-Connection-MultiPlier="$" Bağlantı zaman aşımı="$" Maksimum Bekleme Zamanı="$" otomatik bağlantı retri="$" soket tutma="$" Soket-zaman aşımı="$" köle="$" yazma numarası="1" Yazma Timeout="0" Write-fsync="doğru"/> dbname="veri tabanı" Mongo-Ref="Mongo"/> İD="Başka bir Congotemplate" sınıf="Org.Springframework.veri.Mongodb.çekirdek.Mongotemplate "> isim="MongoDBFactory" referans="MongoDBFactory"/>
5.4 Mongotemplate’a Giriş
Mongotemplate, org paketinde bulunan sınıf.Springframework.veri.belge.MongoDB, Bahar MongoDB desteğinin merkezi sınıfıdır. Şablon, MongoDB belgeleri için oluşturmak, güncellemek, silmek ve sorgulamak için kolaylık işlemleri sunar ve etki alanı nesneleriniz ve MongoDB belgeleri arasında bir eşleme sağlar.
Yapılandırıldıktan sonra, Mongotemplate iş parçacığı güvenlidir ve birden çok örnekte yeniden kullanılabilir.
MongoDB belgeleri ve etki alanı sınıfları arasındaki eşleme, arayüz Mongoconverter’ın uygulanmasına devredilerek yapılır . Spring, SimpleMappingConverter ve MongomappingConverter olmak üzere iki uygulama sağlar, ancak kendi dönüştürücünüzü de yazabilirsiniz. Daha ayrıntılı bilgi için lütfen Mongocoverters bölümüne bakın.
MongoteMplate sınıfı, arayüz monooperasyonlarını uygular . Mümkün olduğunca, Mongooperations üzerindeki yöntemler, API’yi Driver API’sına alışkın olan mevcut MongoDB geliştiricilerine aşina hale getirmek için MongoDB Sürücü Toplama Nesnesinde mevcut yöntemlerden sonra adlandırılmıştır. Örneğin, “Find”, “FindAdModify”, “Findone”, “Insert”, “Kaldır”, “Kaydet”, “Update” ve “UpdateMulti” gibi yöntemleri bulacaksınız. Tasarım hedefi, temel mongodb sürücüsünün kullanımı ile mongooperasyonlar arasında geçiş yapmayı mümkün olduğunca kolaylaştırmaktı . İki API arasında büyük bir fark, mongoperasyonların DBObject yerine etki alanı nesneleri aktarılabilmesidir ve bu operatiosn için parametreleri belirtmek için bir DBObject’i doldurmak yerine sorgu, kriter ve güncelleme işlemleri için akıcı API’ler olmasıdır.
Mongotemplate örneğindeki işlemlere başvurmanın tercih edilen yolu, arayüzü Mongooperations .
MongoteMplate tarafından kullanılan varsayılan dönüştürücü uygulaması MongomappingConverter’dır. MongomappingConverter, nesnelerin belgelerle eşleştirilmesini belirtmek için ek meta verilerden yararlanabilirken, kimliklerin ve toplama adlarının eşlenmesi için bazı kurallar kullanarak ilave meta veriler içermeyen nesneleri dönüştürebilir. Bu sözleşmeler ve eşleme ek açıklamalarının kullanımı, haritalama bölümünde açıklanmaktadır.
M2 sürümünde SimpleMappingConverter, varsayılandı ve bu sınıf artık işlevselliği MongomappingConverter tarafından toplandığı için kullanımdan kaldırıldı.
MongoteMplate’in bir başka merkezi özelliği, MongoDB Java sürücüsüne atılan istisnaların istisna çevirisi, Spring’in taşınabilir veri erişim istisnası hiyerarşisine. Daha fazla bilgi için istisna çeviri bölümüne bakın.
Mongotemplate, MongoDB Sürücü API’sına açıkça maruz bırakılmayan işlevselliğe doğrudan erişmek için ortak görevleri kolayca gerçekleştirmenize yardımcı olmak için MongoteMplate’de birçok kolaylık yöntemi olsa da, altta yatan sürücü API’lerine erişmek için birkaç yürütme geri arama yönteminden birini kullanmak için işlevselliğe erişmek için doğrudan erişebilir. Geri arama, size bir com referansı verecektir.Mongodb.Koleksiyon veya com.Mongodb.DB Nesnesi. Daha fazla bilgi için lütfen bölüm yürütme geri aramalarına bakın.
Şimdi, Mongotemplate ile yay konteyneri bağlamında nasıl çalışacağına dair bir örnek bakalım.
5.4. Mongotemplate’i somutlaştırmak
Aşağıda gösterildiği gibi bir Mongotemplate örneği oluşturmak ve kaydetmek için Java’yı kullanabilirsiniz.
Örnek 5.6. Bir com kaydetmek.Mongodb.Mongo nesnesi ve Spring’in istisna çeviri desteğini etkinleştirme
@Configuration halk sınıf AppConfig < halk @Fasulye Mongo Mongo () atış İstisna < geri dönmek yeni Mongo ("Localhost"); > halk @Fasulye Mongotemplate Mongotemplate () atış İstisna < geri dönmek yeni Mongotemplate (Mongo (), "MyDatabase"); >>
Mongotemplate aşırı yüklenmiş birkaç yapıcı var. Bunlar
- Montajlı (Mongo Mongo, String Databasename) – Com’u alır.Mongodb.Mongo nesnesi ve karşı çalışacak varsayılan veritabanı adı.
- Montajlı (Mongo Mongo, String DatabasEname, UserCredialss UserCredentials) – Veritabanı ile kimlik doğrulaması için kullanıcı adını ve şifreyi ekler.
- Montajlı (Mongodbfactory MongoDBFactory) – Com’u kapsülleyen bir MongoDBFactory nesnesi alır.Mongodb.Mongo nesnesi, veritabanı adı ve kullanıcı adı ve şifre.
- Montajlı (MongoDBFactory MongoDBFactory, Mongoconverter MongoConverter) – Haritalama için kullanmak için bir mongokonverter ekler.
Ayrıca, Spring’in XML şemasını kullanarak bir mongotemplate yapılandırabilirsiniz.
"Localhost" bağlantı noktası ="27017"/>"Mongotemplate" sınıf="Org.Springframework.veri.Mongodb.çekirdek.Mongotemplate "> "Mongo"/> "Databasename" değer ="Coğrafi"/>
Mongotemplate oluştururken ayarlamak isteyebileceğiniz diğer isteğe bağlı özellikler, varsayılan yazardır .
Mongotemplate örneğindeki işlemlere başvurmanın tercih edilen yolu, arayüzü Mongooperations .
WriteresultChecking Politikası
Geliştirildiğinde, com ise bir istisna günlüğe kaydetmek veya atmak çok kullanışlıdır.Mongodb.Herhangi bir MongoDB işleminden döndürülen Writeresult bir hata içeriyor. Bunu geliştirme sırasında yapmayı unutmak oldukça yaygındır ve daha sonra başarılı bir şekilde çalışmış gibi görünen bir uygulama ile sonuçlanır, ancak aslında veritabanı beklentilerinize göre değiştirilmemiştir. Mongotemplate’in WriteresultChecking özelliğini, hatayı, atma ve istisna veya hiçbir şey yapmak için aşağıdaki değerlere, günlük, istisna veya hiçbirine sahip bir numaraya ayarlayın. Varsayılan, hiçbiri bir yazarlık değeri kullanmaktır.
WriteconCern
Com’u ayarlayabilirsiniz.Mongodb.MongoteMplate’ın com gibi daha yüksek bir seviyede belirtilmemişse, yazma işlemleri için kullanacağı writeconcern mülkü.Mongodb.Montaj . Mongotemplate’in WriteConcern özelliği ayarlanmadıysa.
WriteconCernResolver
Farklı WriteConCern değerlerini çalışmaya göre ayarlamak istediğiniz daha gelişmiş durumlar için (Kaldırma, Güncelleme, Ekleme ve Kaydetme İşlemleri için), WriteConCernResolver adlı bir strateji arayüzü MongoteMplate’de yapılandırılabilir . MongoteMplate Pojos’u ısrar etmek için kullanıldığından, WriteconCernResolver, belirli bir Pojo sınıfını bir WriteconCern değerine eşleyebilecek bir politika oluşturmanıza izin verir. WriteConCernResolver arayüzü aşağıda gösterilmiştir.
halk arayüz WriteconCernResolver
Argüman olarak aktarılan Mongoaction, kullanılacak WriteconCern değerini belirlemek veya şablonun değerini varsayılan olarak kullanmak için kullandığınız şeydir. Mongoaction, yazılan koleksiyon adını içerir, Java.lug.Pojo sınıfı, dönüştürülmüş dbobject ve operasyon bir numaralandırma (MongoActionOpation: Kaldır, Güncelleme, Insert, Insert_List, Kaydet) ve diğer birkaç bağlamsal bilgi parçası olarak. Örneğin,
Özel Sınıf MyAppWriteConcernResolver WriteconCernResolver'ı uygular < public WriteConcern resolve(MongoAction action) < if (action.getEntityClass().getSimpleName().contains("Audit")) < return WriteConcern.NONE; >else ise (eylem.getentityClass ().getSimplename ().içerir ("meta veriler")) < return WriteConcern.JOURNAL_SAFE; >Dönüş eylemi.getDefaultWriteConCern (); >>
5.5 Belgeleri kaydetme, güncelleme ve kaldırma
Mongotemplate, etki alanı nesnelerinizi kaydetmeniz, güncellemeniz ve silmeniz ve bu nesneleri MongoDB’de depolanan belgelere eşlemeniz için basit bir yol sağlar.
Kişi gibi basit bir sınıf verildi
halk sınıf Kişi < özel String ID; özel Dize adı; özel int yaş; halk Kişi (Dize adı, int yaş) < Bu.name = isim; Bu.yaş = yaş; > halk String getId () < geri dönmek İD; > halk String getName () < geri dönmek isim; > halk int KAPALI () < geri dönmek yaş; > @Override halk String toString () < geri dönmek "Kişi [id hl-string"> ", ad hl-string"> ", yaş hl-string"> "]"; >>
Nesneyi aşağıda gösterildiği gibi kaydedebilir, güncelleyebilir ve silebilirsiniz.
Mongooperations, MongoteMplate’in uyguladığı arayüzdür.
paketi org.bahar.örnek; içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Kriterler.Neresi; içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Güncelleme.güncelleme; içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Sorgu.sorgu; içe aktarmak java.ümit.Liste; içe aktarmak org.apache.ortak.Kerestecilik.Kayıt; içe aktarmak org.apache.ortak.Kerestecilik.LogFactory; içe aktarmak org.Springframework.veri.Mongodb.çekirdek.Mongooperations; içe aktarmak org.Springframework.veri.Mongodb.çekirdek.Mongotemplate; içe aktarmak org.Springframework.veri.Mongodb.çekirdek.Simpremongodbfactory; içe aktarmak com.Mongodb.Mongo; halk sınıf Moğa < özel statik son Günlük günlüğü = logFactory.getLog (Mongoapp.sınıf); halk statik geçersiz Main (String [] args) atış İstisna < MongoOperations mongoOps = yeni Mongotemplate (yeni Simpremongodbfactory (yeni Mongo (), "veri tabanı")); Kişi P = yeni Kişi("Joe", 34); // INSERT, nesneyi ilk olarak veritabanında saklamak için kullanılır. Mongoops.(P) ekleme; kayıt.bilgi("Sokmak: " + P); // Bulmak P = Mongoops.FindByID (P.getid (), kişi.sınıf); kayıt.bilgi("Kurmak: " + P); // Güncelleme Mongoops.UpdateFirst (sorgu (nerede ("isim").dır-dir("Joe")), güncelleme("yaş", 35), Kişi.sınıf); P = Mongoops.findone (sorgu (nerede ("isim").dır-dir("Joe")), Kişi.sınıf); kayıt.bilgi("Güncellenmiş: " + P); // Silmek Mongoops.Kaldır (P); // silme işleminin çalıştığını kontrol edin Liste People = Mongoops.findall (kişi.sınıf); kayıt.bilgi("İnsan sayısı =:" + insanlar.boyut()); Mongoops.Dropcollection (kişi.sınıf); >>
Bu, aşağıdaki günlük çıkışını üretecektir (Mongotemplate’ın kendisinden hata ayıklama mesajları dahil)
Hata Ayıklama Uygulaması.MongopersistentityIndexcreator: 80 - Sınıf sınıfının analiz edilmesi.bahar.örnek.Dizin bilgisi için kişi. Hata ayıklama.veri.Mongodb.çekirdek.Mongotemplate: 632 - DboBject içeren alanları ekleyin: [_class, yaş, isim] Koleksiyonda: Kişi Bilgisi Org.bahar.örnek.Mongoapp: 30 - Ekle: Kişi [id = 4DDC6E784CE5B1EBA3CEAF5C, Name = Joe, Age = 34] Hata Ayıklama İşi.veri.Mongodb.çekirdek.MongoteMplate: 1246 - Sorguyu Kullanarak Findone: < "_id" : < "$oid" : "4ddc6e784ce5b1eba3ceaf5c">> db'de.Koleksiyon: Veritabanı.Kişi Bilgisi Org.bahar.örnek.Mongoapp: 34 - Bulunan: Kişi [id = 4DDC6E784CE5B1EBA3CEAF5C, Name = Joe, Age = 34] Hata Ayıklama.veri.Mongodb.çekirdek.Mongotemplate: 778 - Sorgu kullanarak güncelleme çağrısı: < "name" : "Joe">ve güncelleme: < "$set" : < "age" : 35>> Koleksiyonda: Kişi hata ayıklama çalışması.veri.Mongodb.çekirdek.MongoteMplate: 1246 - Sorguyu Kullanarak Findone: < "name" : "Joe">DB'de.Koleksiyon: Veritabanı.Kişi Bilgisi Org.bahar.örnek.Mongoapp: 39 - Güncellenmiş: Kişi [id = 4DDC6E784CE5B1EBA3CEAF5C, Name = Joe, Age = 35] Hata Ayıklama İşi.veri.Mongodb.çekirdek.Mongotemplate: 823 - Sorguyu kullanarak kaldır: < "id" : "4ddc6e784ce5b1eba3ceaf5c">Koleksiyonda: Kişi Bilgisi Org.bahar.örnek.Mongoapp: 46 - İnsan Sayısı =: 0 Hata Ayıklama İşi.veri.Mongodb.çekirdek.MongoteMplate: 376 - Droped Collection [Veritabanı.kişi]
Veritabanında depolandığı gibi bir dize ve ObjectID arasındaki mongokonverter kullanılarak örtük dönüşüm vardı ve “ID” adının bir kongresini tanıyan.
Bu örnek, Mongotemplate’deki kaydetme, güncelleme ve kaldırma kullanımını göstermek ve karmaşık haritalama işlevselliğini göstermemek içindir
Örnekte kullanılan StyNax sorgusu, sorgulama belgelerinin bölümünde daha ayrıntılı olarak açıklanmaktadır.
5.5.1 ‘_id’ alanının eşleme katmanında nasıl işlendiği
MongoDB, tüm belgeler için bir ‘_id’ alanınız olmasını gerektirir. Bir tane vermezseniz, sürücü oluşturulan değere sahip bir nesne kimliği atar. MongomappingConverter’ı kullanırken, Java sınıfındaki özelliklerin bu ‘_id’ alanıyla nasıl eşlendiğini yöneten bazı kurallar vardır.
Aşağıda, hangi özelliğin ‘_id’ belge alanına eşleneceğini özetlemektedir:
- @İd ile açıklanmış bir özellik veya alan (org.Springframework.veri.dipnot.İd) ‘_id’ alanına eşlenir.
- Ek açıklama olmayan ancak adlandırılmış bir alan ‘_id’ alanına eşlenir.
Aşağıda, MongoteMplate için varsayılan olan MappingMongoconverter kullanırken _id belge alanına eşlenen özellikte hangi tür dönüşümün yapılacağını ana hatlarıyla belirtir .
- Java sınıfında bir dize olarak bildirilen bir kimlik özelliği veya alan, bir yay dönüştürücü kullanılarak mümkünse bir nesne kimliği olarak dönüştürülecek ve saklanacaktır . Geçerli dönüşüm kuralları MongoDB Java sürücüsüne devredilir. Bir nesne kimliğine dönüştürülemezse, değer veritabanında bir dize olarak saklanır.
- Java sınıfında biginteger olarak ilan edilen bir kimlik özelliği veya alan, bir yay dönüştürücü kullanılarak dönüştürülecek ve bir nesne kimliği olarak saklanacaktır .
Java sınıfında yukarıda bir alan veya özellik belirtilmiyorsa, sürücü tarafından örtük bir ‘_id’ dosyası oluşturulacak, ancak Java sınıfının bir özelliğine veya alanına eşlenmeyecek.
Sorgulama ve güncelleme MongoteMplate, sorgunun dönüşümlerini işlemek için dönüştürücüyü kullanır ve belgeleri kaydetmek için yukarıdaki kurallara karşılık gelen nesneleri günceller, böylece sorgularınızda kullanılan alan adları ve türler, alan sınıflarınızda olanları eşleştirebilir.
5.5.2 Tip Eşleme
MongoDB koleksiyonları, çeşitli türlerin örneklerini temsil eden belgeler içerebilir. Burada harika bir örnek, bir sınıf hiyerarşisini saklıyorsanız veya sadece tür nesneli bir özelliğe sahip bir sınıfınız varsa . İkinci durumda, nesneyi alırken bu mülkün içinde tutulan değerlerin doğru okunması gerekir. Bu nedenle, gerçek belgenin yanında tür bilgilerini saklamak için bir mekanizmaya ihtiyacımız var.
Bunu başarmak için MappingMongoconverter, ana uygulaması olarak varsayılan olarak bir MongotypeMapper soyutlama kullanır. Varsayılan davranışı, üst düzey belge için belgenin içinde _class altında tam nitelikli classname ve ilan edilen özellik türünün karmaşık bir türü ve alt tipi ise her değer için saklıyor.
Örnek 5.7. Eşleme tipi
halk sınıf Örnek < Contact value; >halk soyut sınıf Temas etmek < … >halk sınıf Kişi uzatır Temas etmek < … >Örnek Örnek = yeni Örnek(); örnek.değer = yeni Kişi(); montajlı.Kaydet (örnek); < "_sınıf" : "Com.acımasız.Örnek", "değer" : < "_sınıf" : "Com.acımasız.Kişi" >>
Gördüğünüz gibi, gerçek kök sınıfı persistet için ve karmaşık olduğu için yuvalanmış tip için tür bilgilerini saklıyoruz ve bir temas alt tipi . Yani şimdi Mongotemplat kullanıyorsanız.findall (nesne.Sınıf, “Örnek”) Saklanan belgenin örnek bir örnek olacağını öğrenebiliriz. Ayrıca, değer mülkünün aslında bir kişi olacağını öğrenebiliriz.
Tip eşlemeyi özelleştirme
Tüm Java sınıfı adını tür bilgisi olarak yazmaktan kaçınmak istiyorsanız, ancak bazı anahtarları kullanmak istiyorsanız, varlık sınıfında @typealias ek açıklamasını kullanabilirsiniz. Eşlemeyi özelleştirmeniz gerekiyorsa, daha da fazla. Bu arayüzün bir örneği, MappingMongoconverter üzerinde sırayla yapılandırılabilen varsayılanMongotypemapper’da yapılandırılabilir .
5.5.3 Belge Kaydetme ve Ekleme Yöntemleri
Mongotemplate’de nesnelerinizi kaydetmek ve eklemek için birkaç uygun yöntem vardır. Dönüşüm işlemi üzerinde daha ince taneli kontrole sahip olmak için, MappingMongoconverter, örneğin dönüştürücü ve dönüştürücü ile yay dönüştürücüleri kaydedebilirsiniz .
Ekleme ve kaydetme işlemleri arasındaki fark, nesne zaten mevcut değilse, bir kaydetme işleminin bir ek gerçekleştirmesidir.
Kaydetme işlemini kullanmanın basit durumu. Bu durumda, koleksiyon adı sınıfın adına (tam nitelikli değil) belirlenecektir. Kaydetme işlemini belirli bir toplama adıyla da arayabilirsiniz. Nesneyi saklamak için koleksiyon, eşleme meta verilerini kullanarak geçersiz kılınabilir.
Eklenirken veya kaydedilirken, kimlik özelliği ayarlanmazsa, değerinin veritabanı tarafından otomatikleştirileceği varsayımıdır. Bu nedenle, bir ObjectID’in Otomatikleştirilmesi için sınıfınızdaki kimlik özelliğinin/alanının türünü başarmak için bir dize, objectId veya biginteger olmalıdır .
İşte kaydetme işlemini kullanmanın ve içeriğini almanın temel bir örneği.
Örnek 5.8. Mongotemplate kullanarak belgelerin eklenmesi ve alınması
içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Kriterler.Neresi; içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Kriterler.sorgu; … Kişi P = yeni Kişi("Bob", 33); montajlı.(P) ekleme; Kişi qp = Mongotemplate.findone (sorgu (nerede ("yaş").dır-dir(33)), Kişi.sınıf);
İzleme/kaydetme işlemleri için kullanılabilir işlemler aşağıda listelenmiştir.
- geçersiz kaydetmek (Nesne ObjectTosave) Nesneyi varsayılan koleksiyona kaydedin.
- geçersiz kaydetmek (Nesne ObjectTosave, String CollectionName) Nesneyi belirtilen koleksiyona kaydedin.
Benzer bir ekleme işlemleri kümesi aşağıda listelenmiştir
- geçersiz sokmak (Nesne ObjectTosave) Nesneyi varsayılan koleksiyona ekleyin.
- geçersiz sokmak (Nesne ObjectTosave, String Collection Name) Nesneyi belirtilen koleksiyona ekleyin.
Belgelerim hangi koleksiyona kaydedilecek??
Belgelerde çalışmak için kullanılan koleksiyon adını yönetmenin iki yolu vardır. Kullanılan varsayılan toplama adı, sınıf adı daha düşük bir harfle başlayacak şekilde değiştirilir. Yani bir com.Ölçek.Kişi sınıfı “Kişi” koleksiyonunda saklanacak. @Document ek açıklamasını kullanarak farklı bir koleksiyon adı sağlayarak bunu özelleştirebilirsiniz. Seçilen Mongotemplate Yöntem Çağrıları için son parametre olarak kendi koleksiyon adınızı sağlayarak toplama adını da geçersiz kılabilirsiniz.
Tek tek nesneleri eklemek veya kaydetmek
MongoDB sürücüsü, bir işlemde bir belge koleksiyonunun eklenmesini destekler. Mongooperations arayüzündeki bu işlevselliği destekleyen yöntemler aşağıda listelenmiştir
- sokmak Bir nesne ekle. Aynı kimliğe sahip mevcut bir belge varsa, bir hata oluşturulur.
- insertall İlk parametre olarak bir nesne koleksiyonu alır. Bu yöntem, her nesneyi oluşturur ve yukarıda belirtilen kurallara dayanarak uygun koleksiyona ekler.
- kaydetmek Nesneyi kaydedin, aynı kimlikle var olabilecek herhangi bir nesneyi.
Bir parti içine birkaç nesne ekleme
MongoDB sürücüsü, bir işlemde bir belge koleksiyonunun eklenmesini destekler. Mongooperations arayüzündeki bu işlevselliği destekleyen yöntemler aşağıda listelenmiştir
- sokmak İlk argüman olarak bir koleksiyon alan yöntemler. Bu, veritabanına tek bir toplu yazma nesnesinin bir listesini ekler.
5.5.4 Bir Koleksiyondaki Belgeleri Güncelleme
Güncellemeler için, Mongooperation’ın yöntem güncellemesini kullanarak bulunan ilk belgeyi güncellemeyi seçebiliriz veya sorguya uygun olan tüm belgeleri güncelleyebiliriz . İşte bir kez 50 $ eklediğimiz tüm tasarruf hesaplarının güncellemesine bir örnek.$ Inc operatörünü kullanarak bakiye için 00 bonus.
Örnek 5.9. Mongotemplate kullanarak belgeleri güncelleme
içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Kriterler.Neresi; içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Sorgu; içe aktarmak statik org.Springframework.veri.Mongodb.çekirdek.sorgu.Güncelleme; . Writeresult WR = Mongotemplate.UpdateMulti (yeni Sorgu (nerede ("Hesaplar.hesap tipi").(Hesap.Tip.Tasarruf)), yeni Güncelleme().inc ("Hesaplar.$ $.denge", 50.00), Hesap.sınıf);
Yukarıda tartışılan sorguya ek olarak, bir güncelleme nesnesini kullanarak güncelleme tanımını sunuyoruz. Güncelleme sınıfında, MongoDB için mevcut güncelleme değiştiricilerle eşleşen yöntemler var.
Gördüğünüz gibi çoğu yöntem API için akıcı bir stil sağlamak için güncelleme nesnesini döndür.
Belgeler için güncellemeleri yürütme yöntemleri
- GüncellemeFirst Sorgu belgesi kriterlerini sağlanan güncellenmiş belgeyle eşleştiren ilk belge güncellemeleri.
- UpdateMulti Sorgu belgesi kriterlerini eşleştiren tüm nesneleri, sağlanan güncellenmiş belgeyle günceller.
MongoDB ve Java ile Başlarken – Crud Operations Öğreticisi
MongoDB Java Sürücü Günlüğü artık popüler SLF4J API’si üzerinden etkinleştirildi, bu yüzden pom’a logback ekledim.XML ve bir yapılandırma dosyası logback.XML .
giriiş
Java Quick Start serisinin bu ilk blog yazısında, Java projenizi Maven ile nasıl kuracağınızı ve Java’da bir MongoDB komutunu nasıl yürüteceğinizi göstereceğim. O zaman MongoDB Java Sürücüsünü kullanarak en yaygın işlemleri – Oluştur, Oku, Güncelleme ve Sil gibi keşfedeceğiz . Ayrıca, bu işlemlerin her biri için MongoDB Java sürücüsünün bir parçası olarak mevcut olan daha güçlü seçenekleri ve özelliklerden bazılarını da göstereceğim ve diziye girerken size geliştirmek için gerçekten harika bir bilgi temeli sunacağım.
Gelecek blog yayınlarında devam edeceğiz ve çalışacağız:
Çok Domuz Asit İşlemleri.
MongoDB Java Reaktif Akış Sürücüsü.
Neden MongoDB ve Java?
Java, bu blog yazısı tarihinde BT endüstrisindeki en popüler dildir ve geliştiriciler MongoDB’yi en çok aranan veritabanı olarak üst üste dört yıl olarak oyladılar . Bu blog yazılarında, bu iki büyük teknoloji parçasının birleştirildiğinde ne kadar güçlü olduğunu ve bu güce nasıl erişebileceğinizi göstereceğim.
Önkoşul
Takip etmek için, istediğiniz herhangi bir ortamı ve seçtiğiniz entegre geliştirme ortamını kullanabilirsiniz. Maven 3 kullanacağım.6.2 Ve Java OpenJDK 13, ancak tüm kod Java sürümleri 8 ila 13 ile uyumlu olacak, bu nedenle seçtiğiniz JDK’yı kullanmaktan ve Java sürümünü POM’da güncellemekten çekinmeyin.xml dosyası kurmak üzereyiz.
MongoDB kümesi için, MongoDB Atlas’tan M0 Ücretsiz Seviye MongoDB Kümesi kullanacağız . Zaten bir tane yoksa, bir M0 Cluster blog gönderisiyle başlamaya göz atın.
MongoDB Atlas’ta ücretsiz M0 kümenizi bugün alın. Sonsuza dek ücretsizdir ve bu blog dizisindeki örneklerle çalışmak için kullanabilirsiniz.
Java ve MongoDB’nin birlikte ne kadar iyi çalıştığına bir göz atalım.
Kurulum
Başlamak için yeni bir Maven projesi oluşturmamız gerekecek. Bu noktada iki seçeneğiniz var. Bu serinin git deposunu klonlayabilir veya Maven projesini oluşturabilir ve kurabilirsiniz.
Git deposunu kullanma
Git’i kullanmayı seçerseniz, tüm kodu hemen alacaksınız. Hala manuel kurulumu okumanızı tavsiye ederim.
Aşağıdaki komutla isterseniz depoyu klonlayabilirsiniz.
Veya depoyu bir zip dosyası olarak indirebilirsiniz .
Manuel olarak ayarlama
Sizin için yeni bir Maven projesi oluşturmak için en sevdiğiniz IDE’yi kullanabilirsiniz veya Maven projesini manuel olarak oluşturabilirsiniz. Her iki durumda da, aşağıdaki klasör mimarisini almalısınız:
Pom.XML dosyası aşağıdaki kodu içermelidir:
Her şeyin doğru çalıştığını doğrulamak için basit bir “Merhaba MongoDB oluşturabilmeniz ve çalıştırabilmeniz gerekir!”Program. SRC/Main/Java/Com/MongoDB/QuickStart’ta Hellomongodb’u oluşturun.Java Dosyası:
Ardından, IDE’nizle derleyin ve yürütün veya kök dizindeki komut satırını kullanın (SRC klasörünün bulunduğu yer):
Sonuç şöyle görünmelidir:
Not: Guice’den yasadışı bir yansıtıcı erişim hakkında bazı uyarılar görüyorsanız.Java, onları görmezden gelmek güvenli. Guice Maven tarafından kullanılır ve bir güncellemeye ihtiyaç duyar. Bu GitHub sorununda bunun hakkında daha fazla bilgi edinebilirsiniz . Bu uyarılar Guice ve Maven’in gelecekteki bir sürümünde kaybolacak.
Java ile bağlantı kurmak
Artık Maven Projemiz çalışıyor ve bağımlılıklarımızı çözdüğümüze göre, Java ile MongoDB Atlas’ı kullanmaya başlayabiliriz.
Örnek veri kümesini Hızlı Başlat Atlas blog yayınında önerildiği gibi içe aktardıysanız, oluşturmak üzere olduğumuz Java kodu ile, örnek veri kümesindeki veritabanlarının bir listesini görebileceksiniz.
İlk adım, bir MongoDB Atlas Bağlantı Dizesi’ni MongoClients’a geçirerek bir Moğumluk’u somutlaştırmaktır.() Statik Yöntem Oluştur. Bu, bağlantı dizesini kullanarak MongoDB Atlas ile bir bağlantı kuracaktır. Sonra bu kümedeki veritabanlarının listesini alabilir ve MongoDB ile bağlantıyı test etmek için bunları yazdırabiliriz.
SRC/Main/Java/Com/MongoDB’de bağlantıyı oluşturun.Java Dosyası:
Gördüğünüz gibi, MongoDB bağlantı dizesi Sistem özellikleri , Bu yüzden bunu ayarlamamız gerekiyor. MongoDB Atlas bağlantı dizinizi aldıktan sonra, MongoDB’yi ekleyebilirsiniz.URI Sistemi özelliği IDE’nize. Örneğin Intellij ile yapılandırmam.
Veya Maven’i komut satırında kullanmayı tercih ediyorsanız, kök dizinde çalıştırabileceğiniz eşdeğer komut satırı:
Not: Kabuğunuzdan sürprizlerden kaçınmak için MongoDB Uri’nin çevresindeki çift alıntıları unutmayın.
Standart çıktı şöyle görünmelidir:
İşlemler ekle
Kurulum
Java ile bağlantı kurma bölümünde Hellomongodb ve Connection sınıflarını oluşturduk . Şimdi Create sınıfı üzerinde çalışacağız.
MongoDB Atlas’ta ücretsiz kümenizi kurmadıysanız, şimdi bunu yapmak için harika bir zaman. Kümenizi oluşturmak için talimatları alın .
Koleksiyon ve Veri Modelini Kontrol Etme
Örnek veri kümesinde, bir toplama notları içeren Sample_training veritabanı bulabilirsiniz . Bu koleksiyondaki her belge, belirli bir sınıf için bir öğrencinin notlarını temsil eder.
İşte Mongo Kabuğu’ndaki bir belgenin JSON temsili .
Ve işte aynı öğrencinin genişletilmiş JSON temsili. İsterseniz MongoDB Pusula, Ücretsiz GUI aracımızda alabilirsiniz.
Genişletilmiş Json. MongoDB Java Driver belgelerindeki Java Driver ve Bson hakkında daha fazla bilgi edinebilirsiniz .
Gördüğünüz gibi, MongoDB BSON belgelerini depolar ve her anahtar değeri çifti için, BSON anahtarı ve değeri türü ile birlikte içerir. MongoDB, Class_ID’in aslında bu belgenin Mongo kabuğu temsilinde açık olmayan bir tamsayı değil, bir çift olduğunu bilir.
Zaten bu koleksiyonda 10.000 öğrencimiz (0 ila 9999 arasında öğrenci_idimiz) var ve her biri 10 farklı ders aldı, bu da bu koleksiyonda 100.000’e kadar belge ekliyor. Diyelim ki bu üniversiteye yeni bir öğrenci (Student_id 10.000) geldi ve birinci sınıfında bir sürü (rastgele) not aldı. Java ve MongoDB Java Sürücüsünü kullanarak bu yeni öğrenci belgesini ekleyelim.
Bu üniversitede, class_id 0 ile 500 arasında değişir, böylece 0 ile 500 arasında herhangi bir rastgele değer kullanabilirim.
MongoDB Java Entegrasyonu: 12 Kolay Adım
Python’daki MongoDB Crud Operasyonlarına Başlayın: 3 Kolay Adım
MongoDB alt çizimi (substr) toplama: Basitleştirilmiş 101
MongoDB JavaScript (Nodejs) Konektörü Basitleştirilmiş 101
İçindekiler
Bu sayfa, MongoDB ve Java ile nasıl başlayabileceğinize dair kapsamlı bir genel bakış sunmaktadır. Bu yazıda sen’Java uygulamanızı bir MongoDB örneğine nasıl bağlayacağınızı öğrenin. O zaman MongoDB Java sürücüsünü kullanarak bazı yaygın MongoDB işlemleri gerçekleştireceksiniz. Kurmak için birlikte okuyun MongoDB Java Bugün entegrasyon!
İçindekiler
MongoDB nedir?
MongoDB, çok çeşitli uygulamalara sahip açık kaynaklı bir belge veritabanıdır. Diğer kullanım durumlarının yanı sıra analitik bir veritabanı, işlemsel veritabanı, arama dizin veya veri ambarı olarak kullanılabilir. MongoDB, tam indeksleme, çoğaltma, JSON benzeri depolama ve yapılandırılmamış bir sorgu dili için destek sağlayan esnek bir şemaya sahiptir.
Anahtar MongoDB kavramları:
- İD: Kimlik, MongoDB’de benzersiz bir nesneyi temsil etmek için kullanılan bir alan adıdır. Kullanıcı tarafından veya dolaylı olarak MongoDB sunucusu tarafından oluşturulabilir.
- Toplamak: Bir grup MongoDB belgesini depolayan bir kovadır. Hiyerarşide bir veritabanı altına girer.
- Veri tabanı: Bu bir MongoDB örneğindeki en üst düzey veri organizasyonudur. Veritabanı koleksiyonları depolar ve bir MongoDB örneği birçok veritabanı içerebilir.
- Belge: MongoDB koleksiyonunda depolanan kayıtlara belgeler denir. Anahtarlar ve değerler içerirler. Değerler dizeler, tamsayılar, booleans, tarihler ve diğer gömülü belgeler olabilir.
- Alan: Bu, bir belgedeki anahtar/değer çiftini ifade eder.
Hevo’nun güvenilir, kodsuz, otomatik boru hatları ile veri çoğaltma problemlerinizi 150+ konektörle çözün.
MongoDB’nin temel özellikleri
MongoDB, onu yaygın olarak kullanılabilir ve popüler hale getiren birkaç olağanüstü özelliğe sahiptir. MongoDB’nin en iyi teknik özelliklerine bir göz atalım:
Adhoc sorgularını destekler
MongoDB’yi öne çıkaran en büyük avantajlardan biri, genellikle gerçek zamanlı olarak güncellenen verilerdeki geçici sorguları işlerken performansıdır. MongoDB saha aramaları, aralık aramaları ve normal ifade sorguları yapabilir.
İndeksleme
Dizinleme, arama hızını ve arama sorgularının performansını artırmak için bir veritabanının önemli bir özelliğidir. Dizin oluşturmadan, bir veritabanı, verimsiz olacak sorguyla eşleşenleri seçmek için belgeleri tek tek taramaya zorlanacaktır. Ancak, her sorgunun uygun bir dizin varsa, kullanıcı istekleri sunucu tarafından hızlı bir şekilde yürütülebilir. MongoDB ile herhangi bir alan veya anahtarla, veri kümelerine karmaşık erişim modellerini sürdüren bir belgede mümkündür.
Şema olmayan veritabanı
Klasik ilişkisel veritabanları, tablolar, satır görünümleri, dizinler ve ilişkiler dahil olmak üzere her fonksiyonel öğeyi tanımlamak için bir şema kullanır. MongoDB’de bir koleksiyon farklı belgeleri korur. Şeması yok, bu nedenle bir koleksiyonda çok sayıda belge olabilir, farklı anahtarlara sahiptir ve bu anahtarlar benzersiz olabilir. MongoDB gibi bir şema veritabanı, bu ön kısıtlamaları taşımadığı için daha esnektir, daha fazla “doğal” veritabanıyla eşlenir.
MongoDB hakkında daha fazla bilgi edinmek için burayı ziyaret edin.
Java nedir?
Java, popüler bir programlama dilidir’Sunucu tarafı geliştirme ve mobil uygulama geliştirme için çoğunlukla kullanılır. Tasarımında, Java nesne odaklı bir dildir, bu da tüm veri ve yöntemlerin sınıflar ve nesneler olarak temsil edildiği anlamına gelir.
Java hem derlenebilir hem de yorumlanabilir, yani Java kodunun bayt kodu veya ikili formatına çevirisinin bir derleyici veya tercüman kullanılarak yapılabileceği anlamına gelir. Ondan beri’derlenmiş bir dil, o’Çalışma zamanında çok hızlı ve hata ayıklaması çok kolay.
Bazı en iyi Java kullanım durumları şunları geliştirmek içerir:
- Android uygulamaları
- Masaüstü GUI uygulamaları
- Web uygulamaları
- Bilimsel uygulamalar
- Finansal sektör sunucu tarafı uygulamaları
- Gömülü sistemler
Java’nın temel özellikleri
Aşağıdaki özellikler Java’ya diğer programlama dillerinde bir avantaj sağlar:
- Nesne odaklı: Java programlama dili her şeyi nesne olarak ele alır. Bireysel varlıkları nesneler olarak ele alarak gerçek dünyadaki senaryoları kodla kolayca eşleştirebilir.
- Platform bağımsız: Programlama dillerinin aksine-C ve C ++ gibi, Java platforma özgü bir makinede derlenmez. İnternet üzerinden dağıtılan ve herhangi bir sisteme yüklenen Java Sanal Makinesi (JVM) tarafından yorumlanan platformdan bağımsız bir bayt kodu üretir.
- Güvenlik: Java programlama dilinin güvenlik özelliği ile, kurcalamaya dayanıklı ve virüs içermeyen sistemler geliştirmenizi sağlar. Ayrıca, kodunuzu ve verilerinizi güvende tutmak için genel anahtar kriptografi tabanlı kimlik doğrulama tekniklerini kullanır.
- Taşınabilir: Java, mimariden bağımsız bir programlama dilidir. Bu nedenle, Java programlama dilinde yazılmış bir kodu farklı işlemcilere taşımak kolaydır.
- güçlü: Java, derleme zamanı hata kontrolü ve çalışma zamanı kontrolü kullanarak hataya eğilimli örnekleri ortadan kaldırmaya çalışan bir programlama dilidir.
Java programlama dili hakkında daha fazla bilgi edinmek için burayı ziyaret edin.
Veri analizinizi Hevo’nun kodsuz veri hattı ile basitleştirin
Hevo verileri, otomatik kodsuz veri boru hattı, veritabanları, SaaS uygulamaları, bulut depolama, SDK, S ve akış hizmetleri gibi herhangi bir veri kaynağından veri yüklemeye yardımcı olur ve ETL işlemini basitleştirir. 100’den fazla veri kaynağını destekler Mongodb ve verileri istenen veri ambarına yükler, verileri zenginleştirir ve tek bir kod satırı yazmadan analize hazır bir forma dönüştürür.
Tamamen otomatik boru hattı, kaynaktan varış noktasına herhangi bir kayıp olmadan gerçek zamanlı olarak teslim edilecek veriler sunar. Hataya toleranslı ve ölçeklenebilir mimarisi, verilerin sıfır veri kaybı ile güvenli ve tutarlı bir şekilde ele alınmasını sağlar ve farklı veri biçimlerini destekler. Sağlanan çözümler tutarlıdır ve farklı iş zekası (BI) araçlarıyla da çalışır.
Hevo’nun neden Bes olduğunu kontrol edinT:
- Güvenli: Hevo, verilerin sıfır veri kaybı ile güvenli ve tutarlı bir şekilde ele alınmasını sağlayan hataya toleranslı bir mimariye sahiptir.
- Şema yönetimi: Hevo, şema yönetiminin sıkıcı görevini ortadan kaldırır ve gelen verilerin şemasını otomatik olarak tespit eder ve hedef şemaya eşler.
- Asgari öğrenme: Hevo, basit ve etkileşimli kullanıcı arayüzü ile yeni müşterilerin operasyonlar üzerinde çalışması ve gerçekleştirmesi son derece basittir.
- Hevo ölçeklendirmek için inşa edilmiştir: Kaynak sayısı ve verilerinizin hacmi arttıkça, hevo yatay olarak ölçeklenerek dakikada milyonlarca kayıt ile çok az gecikme ile.
- Artımlı veri yükü: Hevo, gerçek zamanlı olarak değiştirilmiş verilerin aktarılmasına izin verir. Bu, her iki uçta da bant genişliğinin verimli bir şekilde kullanılmasını sağlar.
- Canlı destek: Hevo ekibi, sohbet, e -posta ve destek çağrıları yoluyla müşterilerine olağanüstü destek sağlamak için saatin her saatinde mevcuttur.
- Canlı İzleme: Hevo, veri akışını izlemenize ve verilerinizin belirli bir zamanda nerede olduğunu kontrol etmenizi sağlar.
MongoDB Java entegrasyonunu ayarlamak için adımlar nelerdir?
Umarım, şimdiye kadar, MongoDB ve Java hakkında bazı temel anlayışlar ve neden onlar’uygulama geliştirmede kullanılır. Şimdi izin ver’Dalış yapın ve ayarlayabileceğiniz adımlara bir göz atın MongoDB Java Entegrasyon:
- 1. Adım: OpenJDK paketini yükleyin
- 2. Adım: Java_Home Çevre Değişkenini ayarlayın
- Adım 3: MongoDB’yi yükleyin
- 4. Adım: Bir IDE veya Editör Yükle
- Adım 5: Yeni bir Java Projesi Kurulun
- Adım 6: MongoDB Java İstemci Kütüphanesi’ni Yükle
- Adım 7: MongoDB Java İstemci Kitaplığı’nı kullanın
- Adım 8: Bir MongoDB koleksiyonu oluşturun
- Adım 9: Belgeler Oluştur
- 10. Adım: Sorgu Belgeleri
- Adım 11: Belgeleri Güncelle
- Adım 12: Belgeleri Sil
1. Adım: OpenJDK paketini yükleyin
MongoDB Java kurulumunu takip etmek için’Önce yerel makinenizi Java geliştirme için hazırlamanız gerekecek. Bunu yapmak için önce OpenJDK 8 (Open Java Geliştirme Kiti) paketini yüklemeniz gerekir.
1) Linux
Eğer sen’RE’de Debian veya Ubuntu’da komut satırınızı açın ve aşağıdaki komutu çalıştırın:
$ sudo apt-get install openjdk-8-jdk
Centos, Red Hat, Oracle, Fedora ve diğer benzer Linux dağıtımları için aşağıdaki komutu kullanın:
$ su -c "yum kuru java -1.8.0-openjdk-devel "
2) MacOS
Eğer sen’MacOS’ta RE Aşağıdaki komutu kullanın:
% Brew Install OpenJDK@8
Ardından, java ambalajının bulabilmesi için sembolik bir bağlantı oluşturun:
% sudo ln -sfn/usr/local/opt/openjdk@8/libexec/openjdk.JDK/Kütüphane/Java/JavavirtualMachines/OpenJDK-8.JDK
3) Pencereler
- MSI tabanlı yükleyiciyi bu bağlantıdan indirin.
- ZIP dosyalarını bir klasöre çıkarın.
- Windows yükleyicisi için OpenJDK 8’i çalıştırın.
- Kurulum için ekran istemlerini takip edin.
2. Adım: Java_Home Çevre Değişkenini ayarlayın
JDK’nız mevcut olduğunda, MongoDB Java entegrasyonunuza devam etmek için Java ortamını kurmanız gerekir.
1) Linux
- Terminalinizi ve türünüzü açın:
sudo nano /etc /profil
- Ardından dosyanın sonuna gidin ve yazın:
Dışa Aktar Java_home =/usr/lib/jvm/java-8-openjdk-amd64/bin/java dışa aktarma yolu = $ java_home/bin: $ yol
- Dosyayı kaydet ve çık (Ctrl+O, Ctrl+X).
2) MacOS
- Terminalinizi ve türünüzü açın:
EMACS .profil
- Ardından dosyanın sonuna gidin ve yazın:
Java_home =/Library/Java/Home Dışa Aktarma Java_Home;
- Kaydet ve çık (CTRL-X, CTRL-S; Ctrl-X, Ctrl-C).
3) Pencereler
Çevre değişkenini Windows makinenizde ayarlamak için, yönetici ayrıcalıklarıyla komut istemini açın ve aşağıdaki komutu çalıştırın:
setx -m java_home "c: progra ~ 1javajdk1.8.0_xx "
Ardından, çevre değişkenlerini yeniden yüklemek için komut istemini yeniden başlatın. Yolun eklenip eklenmediğini kontrol etmek için aşağıdaki komutu çalıştırın:
Echo %java_home %
Adım 3: MongoDB’yi yükleyin
MongoDB Java entegrasyonunun java kısmını bitirdikten sonra, MongoDB ve araçlarını yükleme zamanı.
1) Linux
- Bir terminal açın ve MongoDB genel anahtarını paket yönetim sisteminden içe aktarmak için aşağıdaki komutu yayınlayın:
wget -qo - https: // www.Mongodb.org/statik/pgp/sunucu-5.0.ASC | sudo apt-anahtar ekle -
- Ardından aşağıdaki komutu vererek bir liste dosyası oluşturun:
echo "Deb [Arch = AMD64, ARM64] https: // repo.Mongodb.org/apt/ubuntu fokal/mongodb-org/5.0 Çoklu "| sudo tee/etc/apt/kaynak.liste.D/MongoDB-ORG-5.0.liste
- Paket veritabanını yenileyin.
sudo apt-get güncellemesi
- MongoDB’yi yüklemek için aşağıdaki komutu çalıştırın:
sudo apt-get install -y mongoDB-org
- MongoDB’yi başlatın:
sudo Systemctl Başla MongoD
- MongoDB’nin çalıştığını doğrulayın:
sudo SystemCtl Durum MongoD
MongoDB limanda çalışıyor olmalı 27017.
Yukarıdaki talimatlar Ubuntu 20’de test edildi.0. Diğer Linux dağıtımları için kurulum talimatlarını aşağıdaki bağlantıdan alabilirsiniz.
2) MacOS
- MongoDB için homebrew formülünü indirmek için aşağıdaki komutu verin:
demlemek musluk mongodb/demleme
- MongoDB’yi aşağıdaki komutu kullanarak yükleyin:
Brew [email protected]
- Intel işlemcileri çalıştıran macOS bilgisayarları için aşağıdaki komutu kullanarak MongoDB’yi başlatın:
MongoD -Config/usr/local/etc/MongoD.Conf -Fork
- M1 işlemcileri çalıştıran macOS bilgisayarları için aşağıdaki komutu kullanın:
MongoD -Config/Opt/Homebrew/etc/MongoD.Conf -Fork
3) Pencereler
- MongoDB MSI tabanlı yükleyiciyi bu bağlantıdan indirin.
- Yükleyiciyi çift tıklatarak çalıştırın .MSI Dosyası.
- Kurulum için ekran istemlerini takip edin.
4. Adım: Bir IDE veya Editör Yükle
Bu blogda verilen örnekleri çalıştırmak için entegre bir geliştirme ortamı (IDE) kullanmanızı öneririz. Bunun nedeni, Java projenizi oluştururken ve çalıştırırken Maven’i veya mezuniyetini yapılandırmanızı çok daha uygun hale getirmesidir.
Senin altında’Java uygulamaları geliştirmek için kullanılan bazı popüler editörlerin bir listesini bulacak ve MongoDB Java Entegrasyon:
- Github’dan Atom
- Jetbrains tarafından Intellij Fikir
- Microsoft tarafından Visual Studio Kodu
- Eclipse, Eclipse Foundation
Bu IDE’ler, sözdizimi vurgulama, kod tamamlama, tam entegre hata ayıklama özellikleri ve çok daha fazlası gibi yararlı özellikler sunar.
Adım 5: Yeni bir Java Projesi Kurulun
En sevdiğiniz IDE’yi kullanarak yeni bir Maven veya Gradle projesi oluşturun. Eğer sen’Maven’i kullanın, aşağıdaki klasör yapısını almalısınız:
java-quick-start/    pom.xml    src    ana                                         Â
Gradle kullanıyorsanız, aşağıdaki klasör yapısına sahip olmalısınız:
  Â.Gradle    src    ana        Â
Adım 6: Java için MongoDB İstemci Kütüphanesini Yükle
Java için MongoDB İstemci Kütüphanesi, bir Java uygulamasından MongoDB örneğinize bağlanmanıza ve bunlarla iletişim kurmanıza olanak tanır.
Maven kullanıyorsanız, bağımlılıklar listenize MongoDB Java İstemci Kitaplığı’nı ekleyin pom.XML dosya.
org.Mongodb MongoDB-Driver-Sync 4.4.1
Senin pom.XML Dosya şimdi şöyle görünmelidir:
4.0.0 com.Mongodb Java-Quick-START 1.0-Snapshot 8 8 UTF-8 4.4.1 3.10.0 org.Mongodb MongoDB-Driver-Sync $ $ org.apache.uzman.eklentiler Maven-Kompiler $ $ $ $
Eğer sen’Gradle kullanarak, aşağıdaki kod snippet’ini ekleyin inşa etmek.mezun olmak MongoDB Java entegrasyonunuz için bağımlılıklar listesi:
bağımlılık
Senin inşa etmek.mezun olmak Dosya aşağıdaki dosyaya benzemelidir:
eklentiler < id 'base' >İthalat Org.mezun olmak.dağıtım.Downloadgradle versiyonu = '0.1 'bağımlılıklar < compile 'org.mongodb:mongodb-driver-sync:4.4.1' >görevler.Kayıt ('DownloadGradle', DownloadGradle) < description = 'Downloads the Gradle distribution with a given version.' gradleVersion = '4.6' >görevler.Kayıt ('CreateCustomredledIntliction', zip) < description = 'Builds custom Gradle distribution and bundles initialization scripts.' dependsOn downloadGradle def projectVersion = project.version archiveFileName = downloadGradle.gradleVersion.map < gradleVersion ->"MyCompany-Gradle-$-$-Bin.zip "> ziptree'den (indirme.('src/init.D') < into "$/init.d" > >
Adım 7: MongoDB Java İstemci Kütüphanesini Kullanma
MongoDB Java İstemcisi Kütüphanesini kullanmak için, uygulamanızı projenizin temel paket dizininin içinde içerecek bir dosya oluşturun. Adlandırabilirsin Uygulama.java.
Kütüphaneyi başlatmak için aşağıdaki içe aktarma ifadelerini ekleyin:
Statik Com İçe Aktar.Mongodb.müşteri.model.Filtreler.EQ; İthalat Org.bon.Belge; İthalat com.Mongodb.müşteri.MongoClient; İthalat com.Mongodb.müşteri.Mongodients; İthalat com.Mongodb.müşteri.Mongoollection; İthalat com.Mongodb.müşteri.MongoDatabase;
Adım 8: Bir MongoDB koleksiyonu oluşturun
Bu yoldan çıkarak’S Şimdi MongoDB Java entegrasyonunuzun veritabanı ile etkileşime girme zamanı. İzin vermek’Bir koleksiyon oluşturarak ilk başlama. Hedef veritabanını belirleyerek bir MongoDB koleksiyonu oluşturabilirsiniz getDatabase () yöntem ve sonra CreateCollection () yöntemi com.Mongodb.müşteri.Montajlı arayüz. Bu yöntem, koleksiyonun adıyla gerçek bir dize değerini kabul eder. Veritabanı mevcut değilse, MongoDB dolaylı olarak yaratacaktır.
Aşağıdaki kod snippet, bir MongoDB veritabanında bir koleksiyon oluşturur:
Java İçe Aktar.ümit.Diziler; İthalat Org.bon.Belge; İthalat Org.bon.türler.Nesne Kimliği; İthalat com.Mongodb.MongoException; İthalat com.Mongodb.müşteri.MongoClient; İthalat com.Mongodb.müşteri.Mongodients; İthalat com.Mongodb.müşteri.Mongoollection; İthalat com.Mongodb.müşteri.MongoDatabase; İthalat com.Mongodb.müşteri.sonuç.İnsertoneresult; public class createcolection < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; // Create a MongoDB Client MongoClient mongoClient = MongoClients.create(uri)); // Create a MongoDB database MongoDatabase database = mongoClient.getDatabase("usersDB"); // Create a MongoDB Collection MongoCollectioncollection = database.createCollection("users"); System.out.println("Collection Created Successfully!"); > >
Adım 9: Belgeler Oluştur
Aşağıdaki snippet, insertone () Kullanıcıya bir belge ekleme yöntemi’önceki adımda oluşturduğunuz koleksiyon. Veritabanı veya koleksiyonu yoksa, MongoDB her ikisini de oluşturur.
Java İçe Aktar.ümit.Diziler; İthalat Org.bon.Belge; İthalat Org.bon.türler.Nesne Kimliği; İthalat com.Mongodb.MongoException; İthalat com.Mongodb.müşteri.MongoClient; İthalat com.Mongodb.müşteri.Mongodients; İthalat com.Mongodb.müşteri.Mongoollection; İthalat com.Mongodb.müşteri.MongoDatabase; İthalat com.Mongodb.müşteri.sonuç.İnsertoneresult; public class insertone < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); try < InsertOneResult result = collection.insertOne(new Document() .append("_id", new ObjectId()) .append("username", "vitali@30") .append("phonenumber", 2501345876) .append("email", "[email protected]) ); System.out.println("Success! Inserted document id: " + result.getInsertedId()); >Catch (MongoException Me) < System.err.println("Unable to insert due to an error: " + me); >>>>
Ayrıca, çağırarak bir seferde birden fazla belge eklemek mümkündür insertmany () yöntem. Birden çok belge eklemek için bunları bir listeye eklemeniz ve bu listeyi bir dizi olarak geçmeniz gerekir. Aşağıdaki kod snippet, nasıl kullanabileceğinizi göstermektedir insertmany () Bunu başarmak için yöntem.
Java İçe Aktar.ümit.Diziler; Java İçe Aktar.ümit.Liste; İthalat Org.bon.Belge; İthalat com.Mongodb.MongoException; İthalat com.Mongodb.müşteri.MongoClient; İthalat com.Mongodb.müşteri.Mongodients; İthalat com.Mongodb.müşteri.Mongoollection; İthalat com.Mongodb.müşteri.MongoDatabase; İthalat com.Mongodb.müşteri.sonuç.İnsertmanyResult; public class insertmany < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); List userList = Arrays.asList( new Document().append("username", "owen hart"), new Document().append("username", "jack grealish")); try < InsertManyResult result = collection.insertMany(userList); System.out.println("Inserted document ids: " + result.getInsertedIds()); >Catch (MongoException Me) < System.err.println("Unable to insert due to an error: " + me); >>>>
10. Adım: Sorgu Belgeleri
MongoDB Java entegrasyonunuzla birlikte çalışarak, bir koleksiyonda belgeleri alabilirsiniz bulmak() yöntem. Bu yöntem, bir koleksiyondaki tüm belgeleri içeren yinelenebilir bir nesne döndürür:
İthalat com.Mongodb.müşteri.Bulunabilir; İthalat com.Mongodb.müşteri.Mongoollection; İthalat com.Mongodb.müşteri.MongoDatabase; Java İçe Aktar.ümit.Yineleyici; İthalat Org.bon.Belge; İthalat com.Mongodb.MongoClient; public class bul < public static void main( String[] args ) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); FindIterable iterDoc = collection.find(); Iterator it = iterDoc.iterator(); while (it.hasNext()) < System.out.println(doc.it.next()); >>>>
Adım 11: Belgeleri Güncelle
Bir MongoDB veritabanındaki güncellemeler, updateone () yöntemi Güncellemeler sınıf. Aşağıdaki örnekte, telefon numarasının değerini güncelleyecek ve kullanıcı adıyla eşleşen belgeye bir adres ekleyeceksiniz “Vitali@30”.
İthalat Org.bon.Belge; İthalat Org.bon.dönüşüm.BSON; İthalat com.Mongodb.MongoException; İthalat com.Mongodb.müşteri.MongoClient; İthalat com.Mongodb.müşteri.Mongodients; İthalat com.Mongodb.müşteri.Mongoollection; İthalat com.Mongodb.müşteri.MongoDatabase; İthalat com.Mongodb.müşteri.model.UpdateOptions; İthalat com.Mongodb.müşteri.model.Güncellemeler; İthalat com.Mongodb.müşteri.sonuç.UpdaterSult; Public Class Updateone < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); Document query = new Document().append("username", "vitali@30"); Bson updates = Updates.combine( Updates.set("phonenumber", 010154257), Updates.addToSet("address", "666, 5th Avenue, NYC")); UpdateOptions options = new UpdateOptions().upsert(true); try < UpdateResult result = collection.updateOne(query, updates, options); System.out.println("Modified document count: " + result.getModifiedCount()); System.out.println("Upserted id: " + result.getUpsertedId()); // only contains a value when an upsert is performed >Catch (MongoException Me) < System.err.println("Unable to update due to an error: " + me); >>>>
Adım 12: Belgeleri Sil
MongoDB Java entegrasyonu ayarlandıktan sonra, yine de bir MongoDbcollection’daki bir belgede silme işlemi gerçekleştirebilirsiniz DeleteOne () yöntem. Yöntem, silmek istediğiniz belgeyle eşleşen bir sorgu filtresini kabul eder.
Aşağıdaki kod snippet, bir kullanıcıyı kullanarak silecektir EQ () Kullanıcı adıyla belirli bir kullanıcıyı tanımlamak için filtre “Vitali@30” MongoDB Java entegrasyonunuzdan:
Statik Com İçe Aktar.Mongodb.müşteri.model.Filtreler.EQ; İthalat Org.bon.Belge; İthalat Org.bon.dönüşüm.BSON; İthalat com.Mongodb.MongoException; İthalat com.Mongodb.müşteri.MongoClient; İthalat com.Mongodb.müşteri.Mongodients; İthalat com.Mongodb.müşteri.Mongoollection; İthalat com.Mongodb.müşteri.MongoDatabase; İthalat com.Mongodb.müşteri.sonuç.Deleteresult; public sınıfı deleteone < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); Bson query = eq("username", "vitali@30"); try < DeleteResult result = collection.deleteOne(query); System.out.println("Deleted document count: " + result.getDeletedCount()); >Catch (MongoException Me) < System.err.println("Unable to delete due to an error: " + me); >>>>
O’oturmak! Artık kendiniz ayarlayabilirsiniz MongoDB Java entegrasyon.
Çözüm
Bu makale sizi MongoDB ve Java programlama dilini ve temel özellikleriyle tanıttı. Bu kılavuzu başarıyla tamamladıysanız, nasıl kurulacağınız konusunda iyi bir fikriniz olmalıdır MongoDB Java entegrasyon. PC’nizde veya sunucunuzda MongoDB ve Java geliştirme ortamlarını kurmak için gereken adımları ele aldınız. Mongodb örneğinize bağlanmak için Java sürücüsünü nasıl kullanacağınızı da ele aldınız. Son olarak, bazı basit MongoDB Java Crud operasyonlarının nasıl yazılacağına dair örnekler gördünüz.
MongoDB, iş verilerinizi saklamak için harika bir araçtır. Ancak, zaman zaman, daha fazla analiz için bu verileri bir veri ambarına aktarmanız gerekir. Bu süreç için şirket içi bir çözüm oluşturmak pahalı ve zaman alıcı bir görev olabilir. Hevo verileri ise, veri aktarım sürecinizi otomatikleştirebilecek, bu nedenle işinizin analiz, müşteri yönetimi, vb. Bu platform, 100’den fazla kaynaktan veri aktarmanıza olanak tanır Mongodb Snowflake, Google Bigquery, Amazon Redshift, vb. Size sorunsuz bir deneyim sunacak ve iş hayatınızı çok daha kolay hale getirecektir.
Hevo’yu bir spin için almak istiyorum? 14 günlük ücretsiz bir deneme için kaydolun ve ilk elden zengin hevo süitini deneyimleyin.
Görüşlerinizi paylaşın MongoDB Java Yorumlar bölümüne entegrasyon!
Java MongoDB İşlemleri: Yaratılış, Yönetim ve İş Akışları Basitleştirildi | 101 Rehber
Veritabanlarının işlenmesi ve veriler üzerinde birkaç işlem yapmak zor olabilir. Toplanan verilerin yönetim ve çalışma sorunlarını çözmek için veritabanı yönetim sistemleri tanıtıldı. En popüler veritabanlarından biri MongoDB. MongoDB en esnek veritabanlarından biridir ve Java ile çalıştırmak onu daha hızlı ve daha kolay hale getirir.
İçindekiler
Bu makalede, Java MongoDB işlemlerini öğreneceksiniz. Ve ayrıca, MongoDB işlemlerinin nasıl oluşturulacağını, yönetileceğini ve çalışılacağını tartışacağız.
İçindekiler
- Önkoşul
- MongoDB nedir?
- Java ile MongoDB nasıl çalıştırılır?
- MongoDB işlemi nedir?
- Java MongoDB işlemlerinin oluşturulması
- Java MongoDB işlemlerinin yönetimi
- Java MongoDB işlemlerinin iş akışı
- Çözüm
Önkoşul
Veritabanlarının temel anlayışı.
MongoDB nedir?
MongoDB, SQL veritabanlarından temelde farklı olan NoSQL veritabanıdır. MongoDB, ilişkisel olmayan, açık kaynaklı, platformdan bağımsız ve belgeye dayalı bir veritabanıdır. SQL veritabanları ilgili verileri tablolarda saklarken, MongoDB ile ilgili olmayan verilerle ilgilenir.
MongoDB, tek veya çoklu belgelerde asit (atomiklik, tutarlılık, izolasyon ve dayanıklılık) işlemlerini destekler. İşlemlerin bu asit özellikleri, karmaşık işlem işlemlerinin güvenli ve güvenilir olmasını sağlar ve veri geçerliliğini garanti eder. MongoDB, MongoDB 4’te birden fazla belge, koleksiyon ve veritabanları asit işlemlerini tanıttı.0 Sürüm.
MongoDB Standart İşletim Sistemleri, Windows, Linux, MacOS ve The Cloud’da çalışır. İşletim sisteminde çalışan MongoDB baskısı MongoDB topluluk sunucusu ve buluttaki MongoDB kurulumuna MongoDB Atlas denir.
Java ile MongoDB nasıl çalıştırılır?
Java’yı sisteminize ve tercih ettiğiniz entegre geliştirme ortamına (IDE) hazırlayın. Java ve MongoDB’yi kurmak için önce, MongoDB Java Sürücüsünü almalısınız. MongoDB kurulumunun kaynakları, Gradle veya Maven’de iki IDE tarafından alınacak. MongoDB Java sürücüleri hem senkron hem de eşzamansız etkileşim sağlar.
MongoDB Java Sürücüsü Almak İçin Adımlar
- Mongodb sürücüsünün uygun sürümünü bu web sitesinden yükleyin. Ardından, menü simgesinden ürünlere gidin. Bul ‘Veri Doğru’ Seçenek ve üzerine tıklayın.
- Bulabileceğiniz başka bir web sayfasına yeniden yönlendirileceksiniz ‘Veri bağlantısı’ JDBC’yi göreceğiniz genel bakış panelinde seçenek. Üstüne tıkla.
- Başka bir sayfa açılacak. Listeden MongoDB’yi arayın ve daha fazla hareket etmek için üzerine tıklayın.
- İndirme seçeneğini göreceğiniz yeni bir sayfa görünecek. Üzerine tıklayın ve sonra iki seçeneğiniz olacak; Windows ve Linux. İşletim sistemi sisteminize göre, indirmek için üzerine tıklayın.
- İndirme ve tıklayın için bir form doldurmalısınız.
- İndirdikten sonra indirilen dosyayı çıkarın.
- Yüklemeyi başlatmak için çıkarılan dosyayı açın. Tıklamak ‘Sonraki’ Devam etmek için.
- Tüm şartlar ve koşulları kabul edin, ardından İleri’yi tıklayarak ilerleyin.
- Not: Yaklaşan iki pencerede hiçbir şeyi değiştirmeyin. Devam etmek için İleri’ye tıklayın.
- Son olarak, yükleme seçeneğine ulaşacaksınız. Üzerine tıklayın ve kurulum başlayacak.
- Kurulum işleminin tamamlanmasını bekleyin.
- Kurulum tamamlandığında, kurulumu bitirmek için bitti.
- C sürücünüzü açın ve aşağıdaki yolu takip edin. Bir JDBC klasörü bulursanız, kurulum başarılı olur.
Veri entegrasyonunuzu hevo ile zahmetsizce ölçeklendirin’S Arızaya Tolerans Yok Kod Veri Boru Hattı
İşletmelerin veri toplama yeteneği patladıkça, veri ekiplerinin veri odaklı kararları beslemede önemli bir rolü vardır. Yine de, tek bir hakikat kaynağı oluşturmak için depolarındaki dağınık verileri birleştirmek için mücadele ediyorlar. Kırık boru hatları, veri kalitesi sorunları, hatalar ve hatalar ve veri akışı üzerinde kontrol ve görünürlük eksikliği veri entegrasyonunu kabus haline getiriyor.
1000’den fazla veri ekibi Hevo’ya güveniyor’S Veri Boru Hattı Platformu, 150’den fazla kaynaktan verileri birkaç dakika içinde entegre etmek için. SaaS uygulamaları, veritabanları, dosya depolama ve akış kaynakları gibi çeşitli kaynaklardan milyarlarca veri etkinliği, Hevo ile gerçek zamanlı olarak yakın zamanda çoğaltılabilir’S Arızaya Toleranslı Mimari. Ne’Daha fazla-Hevo, boru hattı izleme, otomatik şema yönetimi ve özel alım/yükleme programları için sezgisel gösterge tablolarına sahip veri ekiplerinin eline tam kontrolü koyar.
Bu, şeffaf fiyatlandırma ve 24 × 7 desteği ile birlikte, inceleme sitelerinde bizi en özel veri boru hattı yazılımı yapar.
Veri boru hatlarını yönetmenin daha iyi bir yolunu deneyimlemek için 14 günlük ücretsiz denememizi yapın.
MongoDB işlemi nedir?
MongoDB’deki işlem, birden çok belgede bir veya daha fazla işlem gerçekleştiren mantıksal bir süreç grubudur. İşlem, birden fazla ifadeyi gruplandırma ve izole etmenin ve bunları tek bir işlem olarak işleme koyma yolunu sağlar.
Bir grup komutu ayrı ayrı yürütmek yerine, birlikte paketlemek ve komutları farklı bir bağlamda yürütmek için işlemleri kullanabilirsiniz.
İşlemlerdeki bu işlemler, MongoDB veritabanına gidip gelen çoklu okuma ve yazma işlemleridir. İşlemler, işlem kümesinin bütünlüğünü korur ve son kullanıcıya güçlü veri tutarlılığı sağlar.
MongoDB’deki işlemler asit özelliklerine sahiptir. Bu özellikler, karmaşık işlemlerin güvenli ve güvenilir olmasını sağlar. MongoDB çoklu belgeyi destekler ve dağıtılmış çoklu belgelendirir.
Java MongoDB işlemlerinin oluşturulması
İşlemler yalnızca büyük bir kümenin bir parçası olarak çalışan veritabanlarında gerçekleştirilebilir. Bu küme, parçalanmış bir veritabanı kümesi veya bir kopya seti olabilir. Genellikle, MongoDB işlemleri API yöntemleri aracılığıyla harici uygulamalardan yazılır ve yürütülür. Burada, biz’MongoDB kabuğunu kullanarak bir işlem oluşturacak.
Not: İlk StartTransaction () yönteminden sonra, işlem oturumu 60 saniyeden fazla çalışırsa işlem otomatik olarak iptal edilecektir.
Bir işlem oturumunu baştan sona kavramsallaştırmanın adımları aşağıdadır.
DB.yazarlar.bulmak() [ < _id: ObjectId("620397dd4b871fc65c193106"), first_name: 'James', last_name: 'Joyce', title: 'Ulysses' >, < _id: ObjectId("620398016ed0bb9e23785973"), first_name: 'William', last_name: 'Gibson', title: 'Neuromancer' >, < _id: ObjectId("6203981d6ed0bb9e23785974"), first_name: 'George', last_name: 'Orwell', title: 'Homage to Catalonia' >, < _id: ObjectId("620398516ed0bb9e23785975"), first_name: 'James', last_name: 'Baldwin', title: 'The Fire Next Time' >]
Bir API ile aynı, kodu kullanarak bir işlem oturumu oluşturursunuz:
var seans = db.Getmongo ().Başlangıç ()
Bir sonraki adım, STARTTRansaction () yöntemini çağırarak işlemi başlatmaktır. Aşağıdaki komutu kullanın:
oturum.startTransaction ( < "readConcern": < "level": "snapshot" >, "WriteconCern": < "w": "majority >>)
StartTransaction () yöntemi için iki seçenek var: Endişeyi okuyun ve endişe yazın.
Okuma endişesi seti, koleksiyon ve veritabanı düzeyinde işlemin içinde göz ardı edilir. Bu nedenle, StartTransaction () ‘da işlem düzeyinde okuma endişesini ayarlamanız gerekir. Ancak, Okuma Endişesi Varsayılan, bir işlem için oturum düzeyinde okuma endişesine ayarlanır.
Hem işlem düzeyinde hem de oturum seviyesi okuma endişesi belirlenmiyorsa, müşteri düzeyinin okunması endişeleri otomatik olarak ayarlanır. Müşteri seviyesi okuma endişesi ‘yerel’ Birincil karşı okuma için.
Yazma endişesi yazma işlemlerini yapmak için kullanılır. İşlemler içindeki yazma işlemleri, yazma endişesini belirleyerek dolaylı olarak verilmelidir. Yazma işlemleri daha sonra işlem düzeyinde yazma endişesi kullanılarak işlenir.
İşlem seviyesi yazma endişesini StartTransaction () adlı olarak ayarlayabilirsiniz. İşlem düzeyinde yazma endişesi belirlenmezse, taahhüt için oturum seviyesi yazma endişesini varsayılan olarak. Hem işlem düzeyinde hem de oturum düzeyinde yazma endişeleri ifade edilmezse, işlem düzeyinde yazma endişesi otomatik olarak müşteri düzeyinde yazma endişesine gider.
Java MongoDB işlemlerinin yönetimi
Tüm işlemleri yönetmek ağır iş olabilir, ancak işleri yönetmenin birkaç yolu. Java Spring verileri ve Java Mongo sürücülerini kullanarak işlem desteği ekleyebilirsiniz. Bir Sürücü API’si bunu yapar:
Try (ClientSession Seansı = İstemci.başlangıç ()) < session.startTransaction(); try < collection.insertOne(session, documentOne); collection.insertOne(session, documentTwo); session.commitTransaction(); >Yakalama (istisna e) < session.abortTransaction(); >>
Müşteriden elde edilen müşteri oturumları.Startsession (), artık ihtiyaç duyulmadığında kısa ömürlü ve bir kerede serbest bırakılmalıdır. Böylece, Close () komutunu eklediğinizden emin olun.
Yukarıdaki snippet, her komut satırında oturumu (LSID) içerir. ‘startTransaction’ işlemi temsil eden ilk komutla gönderilir. Ve tamamlandığında işlem gönderilerek işlenir ‘taahhüt.’
MongoDB’nin önceki sürümleri işlemleri desteklemedi, bu nedenle önemli kısım MongotRansactionManager’ı ApplicationContext’inizde yapılandırmaktır. İşlem Yöneticisi, ek açıklama tabanlı işlem desteği için bir giriş noktasıdır. Yapılandırma için aşağıdaki kodu kullanın:
@Configuration Class Config, AbstractMongoconfiguration'ı genişletir < @Bean MongoTransactionManager transactionManager(MongoDbFactory dbFactory) < return new MongoTransactionManager(dbFactory); >> @Service Class Belge Service < private final MongoOperations operations; DocumentService(MongoOperations operations) < this.operations = operations; >@Transactional void insertDocuments () < operations.insert(documentOne); operations.insert(documentTwo); >>
O’oturmak. Java MongoDB işlemlerini yönetmek için fazla bir şey yok, bu nedenle bakmak için birkaç basit adım var.
Java MongoDB işlemlerinin iş akışı
İşlemi kullanmanın ilk aşamasında, bir sürücü aracılığıyla bir MongoDB oturumu başlatmanız gerekir. Bu makale MongoDB Java Sürücüsü ile bir MongoDB oturumunu takip ediyor. Ardından, veritabanı işlemleri grubunuzu yürütmek için bu oturumu kullanın. Birden çok belge, koleksiyon ve parçalar arasında herhangi bir Crud (Oluştur, Oku, Güncelleme ve Sil) işlemlerini çalıştırabilirsiniz.
Mongodb’S işlemlerinin tek bir kısım bağlamında bile tek yazılı düğüm kökenleri vardır. İşlemler için yol için depolama motoru ve çoğaltma protokolü değiştirildi. Aşağıda, 2 MongoDB istemcisine sahip bir e -ticaret uygulamasını temsil eden bir rakam var.
Burada, istemci 1 işlem gerçekleştirir ve istemci 2, istemci 1 tarafından çağrılan işlem tarafından güncellenen bir kaydı okur. Müşteri 1, sipariş koleksiyonuna yeni bir sipariş ekler ve sipariş edilen öğenin stokunu günceller (siparişin başarıyla gönderildiği varsayılarak). Şimdi, yüksek veri dayanıklılığı için uygun tek yazma endişesi çoğunluk. Çoğunluk çoğu kopya anlamına gelir, i.e., Replicas’ın çoğunluğu, birincil, müşteriye yazmanın başarısını tanımadan önce değişiklikleri yapmaktır.
En az bir veya iki ikincil olana kadar işlem, çoğaltma kullanarak güncellemeyi birincilden çekene kadar engellenecektir. Bu süreç MongoDB’yi yapar’s tek-parlak işlem diğer işlemsel nosql’lerden biraz daha yavaş yazıyor.
Çözüm
Java’da MongoDB’yi ve işlemi kullanarak yürüdük’s yaratım, yönetim ve iş akışı. Veritabanlarında Java MongoDB işlemlerini kullanmak, bir veritabanının bir grup işlemi çalıştırdıktan sonra tutarlı bir duruma sahip olacağını garanti eder.
MongoDB, MySQL, Oracle ve diğer asit ilişkisel veritabanlarında uygulanan en tanıdık işlem kalıplarından işlemlerin çalışmasını benimsedi. İronik bir şekilde, ilgili verilerin tek bir belgede birlikte saklanması için MongoDB veri modellemesinin özelliği, çok belgesel işlemler gerektirmeyen belge modelinden yararlanır. Ancak geliştiriciler, verilerini modelleme esnekliğine hayran kalıyor. Böylece, MongoDB’deki işlemlerin işlevi var.
Kodsuz bir veri hattı olan Hevo verileri, MongoDB & gibi 100’den fazla kaynaktan oluşan geniş bir denizden veri aktarabilir MongoDB Atlas Bir BI aracında görselleştirilecek bir veri ambarı veya seçtiğiniz bir hedefe. Güvenilir, tamamen otomatik ve güvenli bir hizmettir’herhangi bir kod yazmanızı gerektirir!
Eğer kullanıyorsan NoSQL veritabanı yönetim sisteminiz olarak MongoDB Ve manuel veri entegrasyonuna karşı fuss alternatifi aramak, o zaman Hevo bunu sizin için zahmetsizce otomatikleştirebilir. Hevo, 100’den fazla kaynak ve BI araçlarıyla güçlü entegrasyonu ile (40+ ücretsiz kaynak dahil), sadece verileri dışa aktarmanıza ve yüklemenize değil, aynı zamanda verilerinizi dönüştürüp zenginleştirmenizi ve analiz hazır hale getirmenizi sağlar.
Hevo’yu gezmek için almak istiyorum? Kayıt 14 günlük ücretsiz deneme ve veri entegrasyon sürecinizi basitleştirin. Hangi planın tüm işletme ihtiyaçlarınızı karşıladığını anlamak için fiyatlandırma ayrıntılarına göz atın.
Bize hakkında bilgi edinme deneyiminizden bahsedin Java MongoDB İşlemi! Aşağıdaki yorumlar bölümünde düşüncelerinizi bizimle paylaşın.