JavaBeans
JavaBean adalah kelas yang mengikuti konvensi JavaBeans seperti yang didefinisikan oleh Sun. Wikipedia memiliki ringkasan yang cukup bagus tentang apa itu JavaBeans :
JavaBeans adalah komponen perangkat lunak yang dapat digunakan kembali untuk Java yang dapat dimanipulasi secara visual dalam alat pembangun. Praktis, mereka adalah kelas yang ditulis dalam bahasa pemrograman Java sesuai dengan konvensi tertentu. Mereka digunakan untuk merangkum banyak objek menjadi objek tunggal (kacang), sehingga mereka dapat dilewatkan sebagai objek kacang tunggal alih-alih sebagai beberapa objek individual. JavaBean adalah Obyek Java yang dapat diserialkan, memiliki konstruktor nullary, dan memungkinkan akses ke properti menggunakan metode pengambil dan penyetel.
Untuk berfungsi sebagai kelas JavaBean, kelas objek harus mematuhi konvensi tertentu tentang penamaan metode, konstruksi, dan perilaku. Konvensi ini memungkinkan untuk memiliki alat yang dapat menggunakan, menggunakan kembali, mengganti, dan menghubungkan JavaBeans.
Konvensi yang diperlukan adalah:
- Kelas harus memiliki konstruktor default publik. Ini memungkinkan instantiasi yang mudah dalam kerangka pengeditan dan aktivasi.
- Properti kelas harus dapat diakses menggunakan get, set, dan metode lain (disebut metode accessor dan metode mutator), mengikuti konvensi penamaan standar. Ini memungkinkan inspeksi otomatis yang mudah dan pembaruan status kacang dalam kerangka kerja, banyak di antaranya termasuk editor khusus untuk berbagai jenis properti.
- Kelas harus serial. Ini memungkinkan aplikasi dan kerangka kerja untuk secara andal menyimpan, menyimpan, dan memulihkan keadaan kacang dengan cara yang tidak tergantung pada VM dan platform.
Karena persyaratan ini sebagian besar dinyatakan sebagai konvensi alih-alih dengan mengimplementasikan antarmuka, beberapa pengembang melihat JavaBeans sebagai Obyek Java Kuno yang mengikuti konvensi penamaan tertentu.
POJO
Sebuah Plain Old Java Object atau POJO adalah istilah yang awalnya diperkenalkan untuk menunjuk objek Java sederhana yang ringan, tidak menerapkan javax.ejb
antarmuka apa pun , yang bertentangan dengan EJB 2.x kelas berat (terutama Entity Beans, Kacang Sesi Stateless bukanlah IMO yang buruk). Hari ini, istilah ini digunakan untuk objek sederhana tanpa barang tambahan. Sekali lagi, Wikipedia melakukan pekerjaan yang baik dalam mendefinisikan POJO :
POJO adalah singkatan untuk Plain Old Java Object. Nama ini digunakan untuk menekankan bahwa objek yang dimaksud adalah Obyek Java biasa, bukan objek khusus, dan khususnya bukan Enterprise JavaBean (terutama sebelum EJB 3). Istilah ini diciptakan oleh Martin Fowler, Rebecca Parsons dan Josh MacKenzie pada September 2000:
"Kami bertanya-tanya mengapa orang begitu menentang menggunakan benda biasa dalam sistem mereka dan menyimpulkan bahwa itu karena benda sederhana tidak memiliki nama mewah. Jadi kami memberi mereka satu, dan itu tertangkap dengan sangat baik."
Istilah ini melanjutkan pola istilah lama untuk teknologi yang tidak menggunakan fitur baru yang mewah, seperti POTS (Layanan Telepon Lama Biasa) di telepon, dan PODS (Struktur Data Lama Biasa) yang didefinisikan dalam C ++ tetapi hanya menggunakan fitur bahasa C, dan POD (Dokumentasi Lama Biasa) di Perl.
Istilah ini kemungkinan besar telah diterima secara luas karena kebutuhan akan istilah umum dan mudah dipahami yang kontras dengan kerangka objek yang rumit. JavaBean adalah POJO yang dapat diserialkan, memiliki konstruktor tanpa argumen, dan memungkinkan akses ke properti menggunakan metode pengambil dan penyetel. Enterprise JavaBean bukan kelas tunggal tetapi seluruh model komponen (sekali lagi, EJB 3 mengurangi kompleksitas Enterprise JavaBeans).
Karena desain menggunakan POJO telah menjadi lebih umum digunakan, sistem telah muncul yang memberikan POJO beberapa fungsi yang digunakan dalam kerangka kerja dan lebih banyak pilihan tentang bidang fungsi mana yang sebenarnya dibutuhkan. Hibernate dan Spring adalah contohnya.
Objek Nilai
Objek Nilai atau VO adalah objek seperti java.lang.Integer
yang menyimpan nilai (karenanya nilai objek). Untuk definisi yang lebih formal, saya sering merujuk pada deskripsi Martin Fowler tentang Value Object :
Dalam Pola Arsitektur Aplikasi Perusahaan saya menggambarkan Objek Nilai sebagai objek kecil seperti uang atau objek rentang tanggal. Properti utama mereka adalah bahwa mereka mengikuti semantik nilai daripada semantik referensi.
Anda biasanya dapat memberi tahu mereka karena gagasan mereka tentang kesetaraan tidak didasarkan pada identitas, sebaliknya dua objek bernilai sama jika semua bidangnya sama. Meskipun semua bidang sama, Anda tidak perlu membandingkan semua bidang jika subset unik - misalnya kode mata uang untuk objek mata uang cukup untuk menguji kesetaraan.
Heuristik umum adalah bahwa objek nilai harus sepenuhnya tidak berubah. Jika Anda ingin mengubah objek nilai Anda harus mengganti objek dengan yang baru dan tidak diizinkan untuk memperbarui nilai-nilai objek nilai itu sendiri - objek nilai yang dapat diupdate menyebabkan masalah alias.
Literatur J2EE awal menggunakan objek nilai jangka untuk menggambarkan gagasan yang berbeda, apa yang saya sebut Obyek Transfer Data . Mereka telah mengubah penggunaannya dan menggunakan istilah Obyek Transfer sebagai gantinya.
Anda dapat menemukan beberapa materi bagus tentang objek nilai di wiki dan oleh Dirk Riehle .
Objek Transfer Data
Obyek Transfer Data atau DTO adalah pola (anti) yang diperkenalkan dengan EJB. Alih-alih melakukan banyak panggilan jarak jauh pada EJB, idenya adalah untuk merangkum data dalam objek nilai yang dapat ditransfer melalui jaringan: Objek Transfer Data. Wikipedia memiliki definisi yang layak tentang Obyek Transfer Data :
Objek transfer data (DTO), sebelumnya dikenal sebagai objek nilai atau VO, adalah pola desain yang digunakan untuk mentransfer data antara subsistem aplikasi perangkat lunak. DTO sering digunakan bersama dengan objek akses data untuk mengambil data dari database.
Perbedaan antara objek transfer data dan objek bisnis atau objek akses data adalah bahwa DTO tidak memiliki perilaku apa pun kecuali untuk penyimpanan dan pengambilan data sendiri (accessor dan mutators).
Dalam arsitektur EJB tradisional, DTO melayani tujuan ganda: pertama, mereka mengatasi masalah bahwa entitas kacang tidak bersambung; kedua, mereka secara implisit menentukan fase perakitan di mana semua data yang digunakan oleh tampilan diambil dan dimasukkan ke dalam DTO sebelum mengembalikan kontrol ke tier presentasi.
Jadi, bagi banyak orang, DTO dan VO adalah hal yang sama (tetapi Fowler menggunakan VO untuk mengartikan sesuatu yang lain seperti yang kita lihat). Sebagian besar waktu, mereka mengikuti konvensi JavaBeans dan dengan demikian juga JavaBeans. Dan semuanya POJO.