Sejak Spring dapat menggunakan transaksi seperti EJB . Bagi saya, Spring mampu menggantikan kebutuhan penggunaan EJB. Adakah yang bisa memberi tahu saya apa saja keuntungan ekstra menggunakan EJB?
Spring dikembangkan sebagai alternatif EJB sejak awal, jadi jawabannya tentu saja Anda dapat menggunakan Spring sebagai pengganti EJB.
Jika ada "keuntungan" menggunakan EJB, menurut saya itu akan bergantung pada keterampilan tim Anda. Jika Anda tidak memiliki keahlian Spring, dan banyak pengalaman EJB, mungkin tetap menggunakan EJB 3.0 adalah langkah yang baik.
Server aplikasi yang ditulis untuk mendukung standar EJB, secara teori, dapat di-porting dari satu server aplikasi Java EE yang sesuai ke yang lain. Tetapi itu berarti menjauh dari salah satu dan semua ekstensi khusus vendor yang mengunci Anda ke satu vendor.
Port pegas dengan mudah antara server aplikasi (misalnya, WebLogic, Tomcat, JBOSS, dll.) Karena tidak bergantung padanya.
Namun, Anda terkunci di Spring.
Spring mendorong praktik desain OO yang baik (misalnya, antarmuka, lapisan, pemisahan masalah) yang menguntungkan masalah apa pun yang mereka sentuh, bahkan jika Anda memutuskan untuk beralih ke Guice atau kerangka DI lain.
Update: Tanya jawab ini berusia lima tahun pada tahun 2014. Perlu dikatakan bahwa dunia pemrograman dan pengembangan aplikasi telah banyak berubah pada saat itu.
Ini bukan lagi hanya pilihan antara Java atau C #, Spring atau EJB. Dengan vert.x dimungkinkan untuk menghindari Java EE sama sekali. Anda dapat menulis aplikasi poliglot yang sangat skalabel tanpa server aplikasi.
Pembaruan: Sekarang Mar 2016. Spring Boot menawarkan cara yang lebih baik untuk menulis aplikasi tanpa server aplikasi Java EE. Anda dapat membuat JAR yang dapat dieksekusi dan menjalankannya di JVM.
Saya ingin tahu apakah Oracle akan terus mendukung spesifikasi Java EE. Layanan web telah mengambil alih untuk EJB. Solusi EJB sudah mati. (Hanya pendapat saya.)
Pertama, izinkan saya mengatakannya dengan jelas, saya tidak mengatakan Anda tidak boleh menggunakan Spring tetapi, karena Anda meminta beberapa keuntungan, berikut setidaknya dua di antaranya:
EJB 3 adalah standar sedangkan Spring tidak (ini adalah standar de facto tapi itu bukan hal yang sama) dan ini tidak akan berubah di masa mendatang. Meskipun Anda dapat menggunakan framework Spring dengan server aplikasi apa pun, aplikasi Spring dikunci ke dalam Spring itu sendiri dan layanan spesifik yang Anda pilih untuk diintegrasikan di Spring.
Framework Spring berada di atas server aplikasi dan pustaka layanan. Kode integrasi layanan (misalnya templat akses data) berada dalam kerangka kerja dan diekspos ke pengembang aplikasi. Sebaliknya, kerangka kerja EJB 3 diintegrasikan ke dalam server aplikasi dan kode integrasi layanan dienkapsulasi di belakang antarmuka. Vendor EJB 3 dengan demikian dapat mengoptimalkan kinerja dan pengalaman pengembang dengan bekerja di tingkat server aplikasi. Misalnya, mereka dapat mengikat mesin JPA secara erat dengan manajemen transaksi JTA. Contoh lainnya adalah dukungan clustering yang transparan bagi pengembang EJB 3.
EJB 3 tidak sempurna, masih kekurangan beberapa fitur (misalnya injeksi komponen yang tidak dikelola seperti POJO sederhana).
sumber
Poin Pascal valid. Namun, ada hal-hal berikut yang mendukung Spring.
Spesifikasi EJB sebenarnya agak longgar, dan oleh karena itu perilaku yang berbeda dapat diamati dengan server aplikasi yang berbeda. Ini tidak akan benar untuk kebanyakan kasus, tentu saja, tapi saya punya masalah untuk beberapa "sudut gelap".
Musim semi memiliki banyak kelebihan, seperti uji pegas, AOP, MVC, integrasi JSF, dll. EJB memiliki beberapa di antaranya (pencegat, misalnya), tetapi menurut saya tidak begitu berkembang.
Kesimpulannya, itu tergantung terutama pada kasus Anda.
sumber
EJBContainer.createEJBContainer()
API standar untuk menggunakan wadah tertanam. Jadi, tetap saja pernyataan Anda salah.Pegas dimaksudkan untuk melengkapi EJB, bukan untuk menggantikannya. Musim semi adalah lapisan di atas EJB. Seperti yang kita ketahui, coding EJB dilakukan dengan menggunakan API, yang artinya kita harus mengimplementasikan semua yang ada di API menggunakan framework Spring. Kita bisa membuat kode pelat ketel, lalu ambil pelat itu, tambahkan beberapa barang ke dalamnya, lalu semuanya selesai. Secara internal Spring terhubung dengan EJB - Spring tidak akan ada tanpa EJB.
Keuntungan utama menggunakan Spring adalah tidak ada kopling sama sekali antar kelas.
sumber