Bugün kuruluşumdaki başka bir geliştirici ile eşlenen sınıfların veritabanına nerede ve nasıl yöntem ekleneceği konusunda hararetli bir tartışmaya girdim. Kullanıyoruz sqlalchemy
ve veritabanı modellerimizdeki mevcut kod tabanının büyük bir kısmı, bir sınıf adı, veritabanı tablolarından python nesnelerine neredeyse mekanik bir çeviri ile eşleştirilmiş özelliklerin bir torbasından biraz daha fazlası.
Argümanda, konumum ORM kullanmanın birincil değerinin, eşlenen sınıflara düşük düzeyli davranışlar ve algoritmalar ekleyebilmenizdi. Modeller önce sınıflardır ve ikincil olarak kalıcıdırlar (bir dosya sisteminde xml kullanarak kalıcı olabilirler, ilgilenmeniz gerekmez). Onun görüşü, herhangi bir davranışın "iş mantığı" olması ve zorunlu olarak sadece veritabanı kalıcılığı için kullanılacak kalıcı modelde herhangi bir yere ait olmasıdır.
İş mantığının ne olduğu ve ayrılması gerektiği arasında kesinlikle bir ayrım olduğunu düşünüyorum , çünkü bunun nasıl uygulandığının alt seviyesinden bir izolasyonu var ve model sınıflarının sağladığı soyutlamanın olduğuna inanıyorum etki alanı mantığı önceki paragrafta tartıştım, ama parmağımı bunun ne olduğuna koymakta zorlanıyorum. Ben API ne olabilir (bizim durumumuzda, HTTP "ReSTful" olan) daha iyi bir duygusu var, kullanıcıların API yapmak istediklerini, ne yapmak için izin verilir ve nasıl farklı çağırmak yapılır.
tl; dr: Bir ORM kullanırken eşlenmiş bir sınıftaki bir yönteme ne tür şeyler girebilir veya gitmelidir ve başka bir soyutlama katmanında yaşamak için nelerin dışarıda bırakılması gerekir?