Java'da kalıcılık
Son yıllarda, EJB 2.0, Hibernate, JPA ve evde yetiştirilenler gibi kavramları kullanarak Java'da kalıcı soyutlama alanında deneyim kazandım. Bana dik bir öğrenme eğrisi ve çok karmaşıklık varmış gibi geldi. Buna ek olarak, SQL'in büyük bir hayranı olarak, birçok soyutlama modelinin SQL üzerinde çok fazla soyutlama sağladığını, çok iyi kavramlar olan, ancak SQL değil "ölçütler", "tahminler", "kısıtlamalar" gibi kavramlar yarattığını düşündüm.
Java'daki kalıcı soyutlama soyut fikri RDBMS'nin bir şekilde OO dünyasıyla eşleştirildiği Nesne-ilişkisel modele dayanıyor gibi görünmektedir. ORM tartışması her zaman duygusal bir tartışma olmuştur, çünkü böyle bir çözüm var olsa bile herkese uyan tek bir çözüm var gibi görünmemektedir.
jOOQ
ORM ile ilgili sorunlardan nasıl kaçınılacağına dair kişisel tercihim, ilişkisel dünyaya bağlı kalmaktır. Şimdi veri modeli paradigması seçimi, kişisel bir tercih olduğu için tartışma konusu olmamalı veya hangi veri modelinin somut bir soruna en uygun olduğu meselesi olmamalıdır. Başlamak istediğim tartışma, jOOQ adlı kendi inat aracımın etrafında . Modern kalıcılık araçlarının avantajlarının çoğunu sağlamak için JOOQ tasarladım:
- SQL tabanlı Etki Alanına Özel Dil
- Temel veritabanı şemasını Java ile eşleyen kaynak kodu oluşturma
- Birçok RDBMS desteği
Birkaç modern kalıcılık aracının sahip olduğu bazı özellikler eklemek (yanlışsam beni düzelt):
- Karmaşık SQL desteği - sendikalar, iç içe seçimler, otomatik birleştirme, kenar yumuşatma, durum cümleleri, aritmetik ifadeler
- Standart olmayan SQL desteği - saklı yordamlar, UDT'ler, ENUMS, yerel işlevler, analitik işlevler
Daha fazla bilgi için lütfen dokümantasyon sayfasını göz önünde bulundurun: http://www.jooq.org/learn.php . Linq yalnızca SQL için tasarlanmamış olmasına rağmen, Linq için C # 'da çok benzer bir yaklaşımın uygulandığını göreceksiniz.
Soru
Şimdi, SQL'in büyük bir hayranı olduğumu söyledikten sonra, diğer geliştiricilerin jOOQ (veya Linq) için heyecanımı paylaşıp paylaşmayacağını merak ediyorum. Kalıcı soyutlamaya bu tür bir yaklaşım uygulanabilir mi? Görebileceğiniz avantajlar / dezavantajlar nelerdir? JOOQ'yu nasıl geliştirebilirim ve fikrinizde eksik olan nedir? Kavramsal veya pratik olarak nerede yanlış yaptım?
Kritik ama yapıcı cevaplar takdir ediliyor
Tartışmanın duygusal bir tartışma olduğunu anlıyorum. Dışarıda benzer şeyleri yapan birçok harika araç var. İlgilendiğim şey, kendi deneyimlerinize veya okuduğunuz makalelere dayanarak kritik ancak yapıcı geri bildirimdir .