Şimdi Ara

ORM neden kullanılır? öğrenmeli miyiz?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
251
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Dostlar ORM toolları hakkında ne düşünüyorsunuz?

    İş ilanlarına bakıyorum bazı şirketler mesela demişki java spring + hibernate bilen

    .net de EF bilen node.js de sequelize bilen diye yazmışlar azda değil baya varlar.


    Ben bi api yaptım mesela, node.js de express kullanarak. Database olarak postgres kullandım. pg modülüyle direk sql leri mi yazdım databaseden istediğimi çektim.

    Böyle kullanmak yerine neden ORM kullanıyor insanlar? Kullanmalımıyız veya öğrenmeli miyiz ne dersiniz? İş ilanlarında baya çıkıyor karşıma.


    Düşüncelerinizi merak ediyorum




  • Herhangi orm sitesine girince benefits yazıyor
    Migration
    Transformation vb yi kolaylaştırıyor, map işlemini yapıyor direkt obje ile ilgileniyoruz, db komutlarıyla haşır neşir olmak gerekmiyor

    Ben böyle biliyorum, dezavantajı hız olabiliyormuş, ORM query si her zaman iyi olmuyormuş o yüzden yavaş kalabiliyormjş
    Tecrübem yok o yüzden daha detaylı bilgi veremiyorum.

    Temlini öğrenmeniz 1 gün sürmez herhalde, sonuçta kendiniz query yazmayı biliyorsunu, kütüphane kullanmayı öğrenceksınız sadece

    Bir de ilanlardaki o istekler strict değildir, plus şeklindedir, olsa iyi olur tarzında

    < Bu ileti mini sürüm kullanılarak atıldı >
  • orm, uygulama tarafindaki is modeli ile iliskisel veritabanini birbirine eslestirmeye yarar.


    Ornek vermeye calisayim. Oop dillerinin birisiyle uygulama gelistiriyorsunuz. Diyelim ki bir urununuz ( domain object ) var ve bu urunun icerisinde liste halinde baska elementler var, misal hangi depoda ne kadar stok oldugu. Bunu nesneye yonelik programlamada basitce


    string product_id;

    string name;

    list<stock> stocks;


    formatinda bir sinif olarak tanimladiniz. Bunu iliskisel bir veritabanina kaydetmek istediginizde normalizasyona giderseniz product ve stock diye 2 tablo tanimlayip aralarinda 1-n iliski kurmaniz gerekir. Ozetle oop'deki sinifinizi ayni yapi ile iliskisel veritabanina kaydedemezsiniz, bunun icin donusumler yapmaniz gerekir.


    ORM'nin asil amaci bu iliskileri tanimlamak ve bu donusumleri otomatik olarak yapmaktir. Bu isleri bahsettiginiz gibi manuel olarak da yapabilirsiniz iyi guzel. Gelelim isin biraz dallayip budaklanmaya basladigi senaryolara.


    yukarida aciklamaya calistigim gibi domain object'i 2 tabloya boldunuz normalizasyon icin. Her urun seciminizde stock tablosuna da sorgu atmaniz gerekiyor, yogun sistemlerde bunu yapma ne kadar mantikli? Orm araclari bu gibi durumlarda size hazir cache yapilari sunar. Bunu da manuel yapmak istersiniz belki ama yazilimda vakit harcayan herkes bilir ki en zor is degiskenlere isim vermek ve cache yonetimidir.


    Diyelim ki devir degistir, cesitli sebepler yuzunden postgres yerine sisteminizi mysql'e tasimaya karar verdiniz. Bu duruma manuel olarak posgtres icin yazdiginiz tum kod gereksiz hale gelecektir, mysql icin bastan yazmak gerekli. Orm araclari ise uygulama ve veritabani arasinda soyutlama ( abstraction ) sagladigi icin sorgularinizi orm dili ile yaparsiniz ( hibernate icin hql sanirim, sql'e cok benzer ) arkada ne tur db olduguna karismazsiniz. Teorik olarak ( pratikte hic bu kadar kolay olmaz ) orm konfigurasyonunuzda db tipini, diyalegini degistirmek sisteminizi postgres'ten mysql'e tasimak icin yeterli olur.


    Bunlar orm'nin ilk aklima gelen avantajlari. Sorunuzun ikinci kismina gelirsek, bu da projesine gore ve ihtiyaclariniza gore degisir. Orm kullanmak zaruret degil, yukarida bahsettigim yapiyi saglarken dogal olarak fazlalik ( overhead ) biniyor sisteme. Diger yandan nosql veritabanlarinin yayginlasmasiyla oop nesnelerini oldugu gibi ( oldugu gibi de yanlis ifade aslinda, ayni yapi ile demek daha dogru ) veri tabaninda saklayabilirsiniz aradaki donusume gerek yok.





  • quote:

    Orijinalden alıntı: bestanealtcizgi

    orm, uygulama tarafindaki is modeli ile iliskisel veritabanini birbirine eslestirmeye yarar.


    Ornek vermeye calisayim. Oop dillerinin birisiyle uygulama gelistiriyorsunuz. Diyelim ki bir urununuz ( domain object ) var ve bu urunun icerisinde liste halinde baska elementler var, misal hangi depoda ne kadar stok oldugu. Bunu nesneye yonelik programlamada basitce


    string product_id;

    string name;

    list<stock> stocks;


    formatinda bir sinif olarak tanimladiniz. Bunu iliskisel bir veritabanina kaydetmek istediginizde normalizasyona giderseniz product ve stock diye 2 tablo tanimlayip aralarinda 1-n iliski kurmaniz gerekir. Ozetle oop'deki sinifinizi ayni yapi ile iliskisel veritabanina kaydedemezsiniz, bunun icin donusumler yapmaniz gerekir.


    ORM'nin asil amaci bu iliskileri tanimlamak ve bu donusumleri otomatik olarak yapmaktir. Bu isleri bahsettiginiz gibi manuel olarak da yapabilirsiniz iyi guzel. Gelelim isin biraz dallayip budaklanmaya basladigi senaryolara.


    yukarida aciklamaya calistigim gibi domain object'i 2 tabloya boldunuz normalizasyon icin. Her urun seciminizde stock tablosuna da sorgu atmaniz gerekiyor, yogun sistemlerde bunu yapma ne kadar mantikli? Orm araclari bu gibi durumlarda size hazir cache yapilari sunar. Bunu da manuel yapmak istersiniz belki ama yazilimda vakit harcayan herkes bilir ki en zor is degiskenlere isim vermek ve cache yonetimidir.


    Diyelim ki devir degistir, cesitli sebepler yuzunden postgres yerine sisteminizi mysql'e tasimaya karar verdiniz. Bu duruma manuel olarak posgtres icin yazdiginiz tum kod gereksiz hale gelecektir, mysql icin bastan yazmak gerekli. Orm araclari ise uygulama ve veritabani arasinda soyutlama ( abstraction ) sagladigi icin sorgularinizi orm dili ile yaparsiniz ( hibernate icin hql sanirim, sql'e cok benzer ) arkada ne tur db olduguna karismazsiniz. Teorik olarak ( pratikte hic bu kadar kolay olmaz ) orm konfigurasyonunuzda db tipini, diyalegini degistirmek sisteminizi postgres'ten mysql'e tasimak icin yeterli olur.


    Bunlar orm'nin ilk aklima gelen avantajlari. Sorunuzun ikinci kismina gelirsek, bu da projesine gore ve ihtiyaclariniza gore degisir. Orm kullanmak zaruret degil, yukarida bahsettigim yapiyi saglarken dogal olarak fazlalik ( overhead ) biniyor sisteme. Diger yandan nosql veritabanlarinin yayginlasmasiyla oop nesnelerini oldugu gibi ( oldugu gibi de yanlis ifade aslinda, ayni yapi ile demek daha dogru ) veri tabaninda saklayabilirsiniz aradaki donusume gerek yok.

    Çok teşekkürler hocam çok iyi anlatmışsınız  





  • Bil ve kullanma türü şeylerdir bunlar. Yazılım dünyasında tecrübe kazanmak zaman isteyen bir şey.


    Kimsenin fazla zamanı yok. Dolayısı ile bir takım tecrübeleri bir yazılım paketi içine koyup satarlar. Teoride iyidir, kullanırsın iyi gelir başta, bir süre sonra bu arkadaşın yetmediği durumlar olur. SQL biliyorsan sıkıntı olmaz, bilmiyorsan yapamazsın.


    Kısa orta vadede faydalı, uzun vadede büyük projelerde zararlıdır.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.