Apakah Spring + Hibernate lebih disukai daripada EJB 3?

12

Ini adalah persepsi saya bahwa setiap kali proyek JEE baru dimulai (di mana teknologi ini akan berlaku), orang lebih suka menggunakan kombinasi Spring + Hibernate daripada EJB 3.

Tampaknya programmer junior bahkan disarankan untuk melakukannya daripada EJB.

Apakah ini preferensi pribadi atau ada alasan yang relevan untuk itu? (mis. bekas luka pribadi yang diciptakan oleh versi EJB sebelumnya yang menyebabkan ketidakpercayaan pada EJB atau teknologi mengasapi alasan kinerja atau kurva pembelajaran)?

JohnDoDo
sumber
2
Saya hampir berpikir itu adalah carry over historis karena ejb tidak sebagus spring + hibernate pada satu titik ... sekarang saya pikir sebuah case dapat dibuat untuk ejb dalam beberapa kasus ...
Rig

Jawaban:

11

Kerangka kerja EJB 3+ sebenarnya cukup bagus karena mereka datang bersama dengan JPA sebagai jawaban untuk kerangka kerja Persistence yang dikonfigurasi anotasi, serta CDI yang memungkinkan anotasi injeksi dependensi yang dikonfigurasi. Anda juga menambahkan di atas Las itu. Musim semi di sisi lain sekarang mengejar dalam permainan dengan konfigurasi melalui anotasi.

Dengan itu dikatakan backlack historis terhadap EJB1 dan 2 tidak boleh diabaikan. Mereka tidak hanya gagal untuk memecahkan masalah dengan menulis aplikasi perusahaan, mereka spektakuler gagal. Itu adalah kegagalan total dari para desainer untuk mendapatkan denyut pada masalah sebenarnya yang dihadapi perusahaan dan pengembang aplikasi web dan pada gilirannya memberikan solusi yang benar-benar mereka butuhkan.

Tambahkan juga ketidakpercayaan bahwa ada beberapa perombakan serius dan ketidakstabilan dengan arah Jawa saat ini dan kurangnya kepercayaan pada pelayan saat ini dan pemilik Sun JVM lama, di Oracle. Banyak orang tidak memiliki keyakinan bahwa Oracle akan memperbaiki Java dan memimpin, dan ada juga kekhawatiran bahwa Yayasan Perangkat Lunak Apache akan menyerah. Semakin banyak orang mencari OpenJDK untuk masa depan Jawa tetapi itu tidak sesuai dengan yang dibutuhkan untuk adopsi Perusahaan.

Beberapa orang melihat semua ini sebagai aroma kematian sebagai aplikasi perusahaan adalah alasan utama mengapa Java secara historis menjadi bahasa pemrograman nomor 1 di dunia selama ini. Inilah sebabnya mengapa Microsoft telah mendapatkan banyak hal melawan Java dengan teknologi .NET.

Pengembang aplikasi Java yang tidak berbasis perusahaan semakin beralih ke OpenJDK dan kerangka kerja open source lainnya untuk membantu membangun solusi mereka dan beberapa tidak pernah melihat ke belakang. Orang bisa mengatakan itu adalah kasus terlalu sedikit terlambat untuk mendapatkan JEE kembali di garis depan legitimasi, meskipun secara teknis JEE dapat dan tidak berdiri berhadapan dengan aplikasi Musim Semi Anda yang sebanding.

maple_shaft
sumber
Sumur dirangkum dan diucapkan dengan baik. Ini berbagi pandangan saya tentang EJB juga.
onigunn
4

EJB memiliki banyak bagasi. Sebagian dari bagasi itu berasal dari fakta bahwa ia ditargetkan pada audiens yang salah. Bagian lain adalah bahwa dua versi pertama adalah omong kosong.

Jika Anda melihat versi EJB asli, desainnya adalah pengembang EJB dapat membuat solusi paket yang dapat digunakan dalam wadah yang sesuai dengan EJB. Untuk toko di rumah, tingkat abstraksi ini tidak perlu. Itu adalah solusi sempurna untuk membuat pasar yang berkembang untuk vendor komponen EJB pihak ketiga. Namun, vendor Container terlalu bersemangat dalam pemasaran mereka dan membuat ton menjual produk mereka sebagai solusi yang layak untuk pengembangan setiap hari. Ini akan sama dengan membangun semua kode aplikasi Anda sebagai komponen COM +.

Untuk lebih banyak latar belakang pada spesifikasi J2EE asli, sebagian besar vendor yang terlibat memiliki server CORBA dan ingin memanfaatkan produk-produk tersebut di masa mendatang. EJB spec dibangun di atas protokol IIOP (sebenarnya Java RMI yang merupakan lapisan tipis di atas IIOP). CORBA telah ditolak karena kerumitannya, dan EJB hanyalah CORBA yang menyamar sehingga membawa banyak masalah yang dimiliki CORBA. Sebenarnya, abstraksi EJB membuatnya lebih sulit untuk dikerjakan dibandingkan dengan implementasi CORBA murni.

Begitu karet menyentuh trotoar, orang-orang menyadari bahwa kinerja dengan EJB mengerikan. Dengan setiap panggilan menjadi panggilan jarak jauh dan kesulitan untuk memulai dan menjalankan aplikasi dengan benar, orang dengan cepat mencari alternatif. Menjalankan Hibernate dan Spring dalam wadah JSP menjadi solusinya.

EJB 3 "mengadopsi" pendekatan ini. Tapi itu masih kompromi umum yang tidak memberikan banyak manfaat. Masih belum ada pasar komponen EJB pihak ke-3 sehingga benar-benar tidak ada gunanya menggunakan wadah EJB untuk membangun solusi Anda.

Singkat cerita. Sementara EJB 3 adalah peningkatan besar selama dua iterasi pertama, itu masih tidak memberikan manfaat yang cukup untuk melebihi biaya.

Michael Brown
sumber
This would be the equivalent of building all of your application code as COM+ components. ... Betapa mengerikan
maple_shaft
3
Tepat;) Saya bekerja dengan dotcom pada tahun 2001 yang memutuskan bahwa mereka akan mem-port aplikasi PERL mereka (yang berfungsi baik-baik saja bagi Anda) ke J2EE. "Arsitek" untuk upaya ini memiliki satu bulan pelatihan J2EE kolektif (belum pernah menulis garis Jawa sebelumnya). Kutipan favorit saya "Ya, saya benar-benar pandai PERL, mengambil Java adalah masalah hanya belajar sintaks baru." Saya mengirimkan resume saya ke Monster hari itu.
Michael Brown