Ketekunan di Jawa
Selama beberapa tahun terakhir, saya telah mengumpulkan pengalaman di bidang abstraksi kegigihan di Jawa, menggunakan konsep seperti EJB 2.0, Hibernate, JPA, dan yang dikembangkan sendiri. Bagi saya, mereka memiliki kurva belajar yang curam dan banyak kerumitan. Selain itu, sebagai penggemar berat SQL, saya juga berpikir bahwa banyak model abstraksi memberikan terlalu banyak abstraksi atas SQL, menciptakan konsep seperti "kriteria", "predikat", "pembatasan" yang merupakan konsep yang sangat bagus, tetapi bukan SQL.
Gagasan umum abstraksi kegigihan di Jawa tampaknya didasarkan pada model Object-relational, di mana RDBMS entah bagaimana cocok dengan dunia OO. Perdebatan ORM selalu menjadi sesuatu yang emosional, karena tampaknya tidak ada solusi tunggal yang cocok untuk semua orang - jika solusi semacam itu bahkan bisa ada.
JOOQ
Preferensi pribadi saya tentang cara menghindari masalah terkait ORM adalah tetap berpegang pada dunia relasional. Sekarang pilihan paradigma model data tidak boleh menjadi topik diskusi karena merupakan preferensi pribadi, atau masalah model data apa yang paling cocok dengan masalah nyata. Diskusi yang ingin saya mulai adalah tentang alat kegigihan saya sendiri yang disebut jOOQ . Saya merancang jOOQ untuk memberikan sebagian besar kelebihan yang dimiliki alat-alat kegigihan modern:
- Bahasa Spesifik Domain berdasarkan SQL
- Pembuatan kode sumber memetakan skema database yang mendasarinya ke Jawa
- Dukungan untuk banyak RDBMS
Menambahkan beberapa fitur yang dimiliki beberapa alat kegigihan modern (koreksi saya jika saya salah):
- Dukungan untuk SQL kompleks - serikat pekerja, seleksi bersarang, self-joins, aliasing, klausa kasus, ekspresi aritmatika
- Dukungan untuk SQL non-standar - prosedur tersimpan, UDT, ENUMS, fungsi asli, fungsi analitik
Silakan pertimbangkan halaman dokumentasi untuk lebih jelasnya: http://www.jooq.org/learn.php . Anda akan melihat bahwa pendekatan yang sangat mirip diimplementasikan dalam Linq untuk C #, meskipun Linq tidak secara khusus dirancang untuk SQL.
Pertanyaan
Sekarang, setelah mengatakan bahwa saya penggemar berat SQL, saya bertanya-tanya apakah pengembang lain akan berbagi antusiasme saya untuk jOOQ (atau Linq). Apakah jenis pendekatan untuk abstraksi kegigihan ini layak dilakukan? Apa kelebihan / kekurangan yang mungkin Anda lihat? Bagaimana saya bisa meningkatkan jOOQ, dan apa yang hilang menurut Anda? Di mana saya salah, secara konsep atau praktis?
Jawaban kritis tetapi konstruktif dihargai
Saya mengerti bahwa debat ini bersifat emosional. Ada banyak alat hebat di luar sana yang sudah melakukan hal serupa. Yang saya minati adalah umpan balik yang penting tetapi konstruktif, berdasarkan pengalaman Anda sendiri atau artikel yang mungkin telah Anda baca.