Merhabalar,
Bu konuda internet üzerinde bulabileceğiniz temel seviyede bir bilgi vermek yerine daha ayrıntılı birkaç noktaya değineceğim.
- MongoTemplate daha esnek bir yapıya sahip olup kullanım alanı olarak da daha kapsamlıdır. Oluşturmak istediğiniz herhangi bir crud işlemi çok kompleks olduğunda mongotemplate kullanmaya ihtiyaç duyacağınızı düşünüyorum.
- MongoRepository kullanım kolaylığı&zaman kazancı sağlar diyebilirim. Mongotemplate'e kıyasla az kod satırıyla daha çok iş yapabilmeye olanak sağlar. Örneğin basit bir sorgu işlemi üzerinden gidecek olursak; ogrenciler document'inde ad ve soyad ile sorgu yapmanın MongoRepository'deki karşılığı findByAdAndSoyad(); yazmaktan ibarettir. MongoTemplate'de aynı işlem için Query nesnesi oluşturup sonrasında arama yapmanız gerekir.
- MongoRepository repository programming model in bir parçası olduğundan internette daha fazla kaynak bulabilirsiniz.
- Ben kendi adıma MongoRepository'i sadece sorgu için kullanırım onun dışında beni kısıtlayan bir yapı olduğunu düşünüyorum. MongoRepository'de update ve insert işlemlerinin karşılığı "save" methodudur. Yani bir ya da birden çok satırı update etmeden önce update edilecek satır/ları getirecek bir sorgu çekmeniz gerekir. Bu sorgudan dönen satırı güncelleyip güncellenmiş entity nesnesini save methodunun içine parametre olarak vermelisiniz. Update işlemi sırasında da MongoDb kendi içinde update edilecek satırı bulup sonra update işlemi gerçekleştireceğinden dolayı bir update için 2 kez sorgu atmış olursunuz. Mongotemplate'de ise güncellemek istediğiniz kaydın query'si ile değişecek fieldlarını parametre olarak vermeniz yeterlidir. Böylelikle update işleminden önce veritabanına ekstra sorgu atmamış olursunuz.
İyi çalışmalar.