JDBC uyumlu bir uygulama SQL ifadelerini nerede depolamalı ve neden?
Şimdiye kadar şu seçenekleri belirlemeyi başardım:
- İş nesnelerinde kodlanmış
- SQLJ cümlelerine gömülü
- Veri Erişim Nesneleri gibi ayrı sınıflarda kapsülleyin
- Meta veriye dayalı (nesne şemasını veri şemasından ayırın - aralarındaki eşlemeleri meta verilerde açıklayın)
- Harici dosyalar (ör. Özellikler veya Kaynak dosyaları)
- Saklanan Prosedürler
Her birinin "Artıları" ve "Eksileri" nelerdir?
SQL kodu “kod” mu yoksa “meta veri” olarak mı düşünülmelidir?
Depolanan prosedürler yalnızca performans optimizasyonu için mi kullanılmalı yoksa veritabanı yapısının meşru bir soyutlaması mıdır?
Performans, kararın ana etkenlerinden biri mi? Satıcıya kilitlenme ne olacak ?
Hangisi daha iyi - gevşek kaplin veya sıkı kaplin ve neden?
DÜZENLENMİŞ: Cevaplar için herkese teşekkür ederim - işte özet:
Meta veriye dayalı yani Nesne İlişkisel Eşleştirmeler (ORM)
Artıları:
- Çok soyut - DB sunucusu, modeli değiştirmeye gerek kalmadan değiştirilebilir
- Geniş yayılı - pratik olarak bir standart
- Gerekli SQL miktarını azaltır
- SQL'i kaynak dosyalarında depolayabilir
- Performans (genellikle) kabul edilebilir
- Meta veriye dayalı yaklaşım
- (Veritabanı) satıcı bağımsızlığı
Eksileri:
- SQL'i ve gerçek geliştiricilerin niyetlerini gizler
- DBA tarafından gözden geçirilmesi / değiştirilmesi zor SQL
- Garip durumlar için SQL hala gerekli olabilir
- Tescilli bir sorgu dilinin (örneğin HQL) kullanılmasını zorlayabilir
- Kendini optimizasyona (soyutlamaya) borç vermez
- Referans bütünlüğünden yoksun olabilir
- SQL bilgisi eksikliğinin veya DB'de kodlama eksikliğinin yerine geçer
- Asla yerel veritabanı performansıyla eşleşmeyin (yaklaşsa bile)
- Model kodu, veritabanı modeliyle çok sıkı bir şekilde birleştirilmiştir
DAO katmanında kodlanmış / kapsüllenmiş
Artıları:
- SQL, verilere erişen nesnelerde tutulur (kapsülleme)
- SQL yazmak kolaydır (geliştirme hızı)
- Değişiklik gerektiğinde SQL'in izini sürmek kolaydır
- Basit çözüm (dağınık mimari yok)
Eksileri:
- SQL, DBA tarafından incelenemez / değiştirilemez
- SQL'in DB'ye özgü olması muhtemeldir
- SQL'in bakımı zorlaşabilir
Saklanan Prosedürler
Artıları:
- Veritabanında tutulan SQL (veriye yakın)
- SQL, DBMS tarafından ayrıştırılır, derlenir ve optimize edilir
- DBA'nın gözden geçirmesi / değiştirmesi için SQL kolaydır
- Ağ trafiğini azaltır
- Yükseltilmiş güvenlik
Eksileri:
- SQL veritabanına bağlıdır (satıcıya kilitlenme)
- SQL kodunun bakımı daha zordur
Harici dosyalar (ör. Özellikler veya Kaynak dosyaları)
Artıları
- Uygulamayı yeniden oluşturmaya gerek kalmadan SQL değiştirilebilir
- SQL mantığını uygulama iş mantığından ayırır
- Tüm SQL ifadelerinin merkezi deposu - bakımı daha kolay
- Anlaşılması daha kolay
Eksileri:
- SQL kodu bakımı yapılamaz hale gelebilir
- SQL kodunu (sözdizimi) hataları için kontrol etmek daha zor
SQLJ cümlelerine gömülü
Artıları:
- Daha iyi sözdizimi denetimi
Eksileri:
- Java ile çok yakın bağlar
- JDBC'den daha düşük performans
- Dinamik sorgu eksikliği
- Çok popüler değil