Giriş
Nesne İlişkisel Eşleme (ORM), nesne yönelimli bir paradigma kullanarak veritabanındaki verileri sorgulamanızı ve değiştirmenizi sağlayan bir tekniktir. ORM hakkında konuşurken, çoğu insan Nesne İlişkisel Haritalama tekniğini uygulayan bir kütüphaneye , dolayısıyla "ORM" ifadesine başvurur.
ORM kütüphanesi, kendi dilinizde yazılmış, verileri işlemek için gereken kodu içeren tamamen sıradan bir kütüphanedir, böylece artık SQL kullanmazsınız; kullandığınız dilde bir nesneyle doğrudan etkileşim kurarsınız.
Örneğin, sahte bir dili olan tamamen hayali bir durum:
Bir kitap sınıfınız var, yazarın "Linus" olduğu tüm kitapları geri almak istiyorsunuz. Manuel olarak böyle bir şey yaparsınız:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
Bir ORM kütüphanesi ile şöyle görünecektir:
book_list = BookTable.query(author="Linus");
Mekanik parça, ORM kütüphanesi aracılığıyla otomatik olarak halledilir.
Lehte ve aleyhte olanlar
ORM kullanmak çok zaman kazandırır çünkü:
- NEM ALMA : Veri modelinizi yalnızca tek bir yere yazarsınız ve kodu güncellemek, bakımını yapmak ve yeniden kullanmak daha kolaydır.
- Veritabanı işlemeden I18N'ye kadar birçok şey otomatik olarak yapılır .
- MVC kodu yazmaya zorlar , bu da sonunda kodunuzu biraz daha temiz hale getirir.
- Kötü biçimlendirilmiş SQL yazmak zorunda değilsiniz (gerçekte çok güçlü ve karmaşık bir dil olduğunda, SQL bir "alt" dil gibi davranılır, çünkü çoğu Web programcısı bunu gerçekten emer).
- Hijyenik; hazırlanmış ifadeler veya işlemler kullanmak bir yöntemi çağırmak kadar kolaydır.
ORM kitaplığı kullanmak daha esnektir, çünkü:
- Doğal kodlama yönteminize uyuyor (sizin diliniz!).
- DB sistemini soyutlar, böylece istediğiniz zaman değiştirebilirsiniz.
- Model, uygulamanın geri kalanına zayıf bir şekilde bağlıdır, böylece onu değiştirebilir veya başka bir yerde kullanabilirsiniz.
- Baş ağrısı olmadan veri mirası gibi OOP iyiliğini kullanmanızı sağlar.
Ancak ORM bir acı olabilir:
- Öğrenmeniz gerekiyor ve ORM kütüphaneleri hafif araçlar değil;
- Ayarlamanız gerekiyor. Aynı sorun.
- Her zamanki sorgular için performans uygundur, ancak bir SQL yöneticisi büyük projeler için kendi SQL'i ile her zaman daha iyisini yapar.
- DB'yi soyutlar. Sahnenin arkasında neler olduğunu biliyor olsanız da sorun olmasa da, bir
for
döngüde ağır bir vuruş gibi çok açgözlü ifadeler yazabilen yeni programcılar için bir tuzak .
ORM hakkında nasıl bilgi edinebilirim?
Birini kullan. Hangi ORM kütüphanesini seçerseniz seçin, hepsi aynı prensipleri kullanır. Buralarda birçok ORM kütüphanesi var:
Web programlamasında bir ORM kütüphanesini denemek istiyorsanız, aşağıdaki gibi bir çerçeve yığınını kullanmanız daha iyi olur:
- Symfony (PHP, Propel veya Doktrini kullanarak).
- Django (Python, dahili bir ORM kullanarak).
Bir şey öğrenmeye çalışmadığınız sürece kendi ORM'nizi yazmaya çalışmayın. Bu devasa bir iş parçası ve eskileri güvenilir hale gelmeden önce çok zaman ve iş aldı.