Bəzi backend qərarlarını Java yox, database verir
Backend yazmağa başlayanda entity-lər çox vaxt ən asan hissə kimi görünür. Bir neçə class yaradırsan, relation-ları əlavə edirsən və service yazmağa keçirsən. Amma sistem böyüdükcə başa düşürsən ki, verdiyin database qərarları Java kodundan daha uzun yaşayır.
Bir məlumatın unique olub-olmaması, hansı kolonların birlikdə açar təşkil etməsi, tarixçənin saxlanılması və ya sadəcə son vəziyyətin saxlanılması sonradan business logic-ə çevrilir.
Entity hər şeyi həll etmir
JPA ilə işləmək çox rahatdır. Relationship yazırsan, repository yaradırsan və məlumatı obyekt kimi idarə edirsən. Bu rahatlıq bəzən database-in öz qaydalarını unutdurur.
Mən data modelinə baxanda artıq yalnız “bu entity hansı entity ilə əlaqəlidir?” sualını verməməyə çalışıram. “Bu məlumatın iki nüsxəsinin yaranmasına icazə varmı?”, “keçmiş vəziyyəti bilməliyikmi?”, “bu əməliyyat təkrar oluna bilərmi?” kimi suallar daha vacib olur.
Çünki application kodunda qoruduğun qaydanı database qoruyursa, sistemin başqa bir hissəsi həmin qaydanı təsadüfən poza bilmir.
Sadə schema sonradan çox şey dəyişir
İlk versiyada hər şey sadə görünür. Sonra audit, reporting, concurrency və real istifadə gəlir. Elə həmin vaxt əvvəl verdiyin database qərarlarının qiyməti ortaya çıxır.
Ona görə indi yeni sistem quranda database-i sadəcə Java entity-lərinin saxlandığı yer kimi düşünmürəm. O, sistemin qaydalarının bir hissəsidir.