Saya sudah melakukan riset sendiri dan memahami konsep dasar. Tetapi beberapa wawasan hanya dapat diperoleh melalui pengalaman nyata.
Apa kelebihan myBatis yang membuatnya berharga untuk belajar kerangka kerja baru?
Dalam hal apa Anda akan menghindari menggunakannya?
orm
database-development
hibernate
Kshitiz Sharma
sumber
sumber
Jawaban:
Pertimbangkan apa yang ingin Anda capai. Biasanya, model Segregasi Respons Kueri Perintah berfungsi dengan baik untuk domain yang kompleks.
Alasannya adalah Anda mencoba melakukan salah satu dari dua hal yang biasanya:
Hibernate berfungsi dengan baik untuk case 1 memungkinkan Anda untuk hanya membuat POJO dan bertahan / memperbaruinya. Ini juga melakukan ini dengan cepat, kecuali domain Anda cukup besar.
myBatis bagus untuk mengambil kueri (kasus 2) di mana Anda hanya ingin jawaban. Hibernate akan mencoba memuat seluruh grafik objek dan Anda harus mulai menyetel kueri dengan trik LazyLoading agar tetap berfungsi pada domain besar. Ini penting ketika menjalankan kueri analitik kompleks yang bahkan tidak mengembalikan objek entitas. Hibernate hanya menawarkan SqlQuery dan bean Transformers dalam hal ini dengan tipe standar besar seperti BigDecimal, sementara myBatis dapat dengan mudah memetakan ke POJO non-entitas sederhana.
Dua kasus ini adalah perbedaan antara Perintah di mana Anda ingin mengubah data domain dan Respons di mana Anda hanya ingin mengambil beberapa data.
Jadi, pertimbangkan dua kasus ini dan apa yang dilakukan aplikasi Anda. Jika Anda memiliki domain sederhana dan hanya mengambil informasi, gunakan myBatis. Jika Anda memiliki domain yang kompleks dan entitas yang bertahan, gunakan Hibernate. Jika Anda melakukan keduanya, pertimbangkan pendekatan hybrid. Itulah yang kami gunakan pada proyek kami yang memiliki ribuan entitas untuk mengendalikannya. ;)
sumber
MyBatis adalah SQL centric. Ini membuat Anda memanggil pernyataan SQL dan hasil pemetaan (tabel) ke objek pohon.
Manfaat utama adalah bahwa itu bukan ORM. Itu tidak memetakan tabel ke objek sehingga tidak menderita ketidakcocokan impedansi orm. Cocok untuk basis data yang kompleks atau lawas atau untuk menggunakan fitur db seperti prosedur tersimpan, tampilan, dan sebagainya.
Ini cukup sederhana dan mudah dipelajari sehingga cocok juga untuk tim dengan keterampilan rendah karena tidak perlu memiliki guru hibernasi di antara mereka.
Lihat di jpetstore 6 http://mybatis.org/spring/sample.html
sumber
Karena pertanyaan mengacu pada komentar saya , inilah yang ada dalam pikiran saya untuk menulisnya.
Pertama-tama, ini berasal dari konteks pertanyaan awal Anda. Dalam keadaan lain saya bisa memberikan saran yang berbeda. Poin yang membuat saya menyarankan MyBatis adalah ini:
Dalam salah satu proyek sebelumnya, tim kami telah mempertimbangkan untuk pindah dari Hibernate dengan alasan seperti yang Anda jelaskan. Mirip dengan Anda, kami akan beralih ke JDBC, tetapi kolega dari proyek lain merekomendasikan kami MyBatis. Tim memutuskan untuk mencobanya, sambil menjaga JDBC sebagai opsi mundur jika ada masalah.
Pada saat itu, saya tidak tahu apa-apa tentang MyBatis tetapi memiliki pengalaman yang cukup dengan JDBC untuk memastikan itu akan melakukan pekerjaan. Meskipun demikian, saya telah sangat mendukung ide untuk mencoba MyBatis, alasan utama adalah bahwa berdasarkan pengalaman saya sebelumnya, jumlah kode boilerplate yang harus kita tulis dengan JDBC akan sangat menakutkan.
Lagi pula, kami mencoba MyBatis dan berfungsi seperti yang diiklankan. Itu sebabnya saya menulis komentar yang Anda tanyakan.
Jika Anda mengharapkan saya untuk memberikan gambaran terperinci tentang teknologi, atau entah bagaimana memuji keunggulannya - maaf saya tidak bisa melakukan itu. Jika saya bisa - saya sudah menulis itu dalam jawaban terpisah untuk pertanyaan awal Anda, daripada memberikan komentar singkat. Saya sebutkan bahwa saya tidak tahu apa-apa tentang MyBatis saat itu - yah saya masih memiliki sedikit pengetahuan tentang hal itu maaf. Transisi dari Hibernate dilakukan oleh anggota tim lain dan itu tidak berdampak pada kode yang telah saya kerjakan. Saya hanya mengingat takeaways kunci (berdasarkan yang saya buat komentar saya), yaitu bahwa 1) MyBatis menyelesaikan masalah yang kami miliki dengan Hibernate, 2) itu tidak memperkenalkan masalah sendiri dan 3) itu memungkinkan kami untuk menghindari menulis kode boilerplate I mengharapkan kalau-kalau kita beralih ke JDBC. Itu saja.
sumber
Hibernate sangat tahu banyak sihir , perilaku tak terduga dan kurva belajar yang besar. Ada kerangka kerja lain di luar sana yang lebih fokus pada kesederhanaan dan akan membuat Anda memegang kendali.
myBatis adalah salah satunya, proyek saya MentaBean adalah proyek lain. Saya sudah menulis posting blog tentang itu yang mungkin bisa membantu.
sumber
Saya menggunakan Hibernate untuk pemuatan data dan proyek transformasi data 5 tahun yang lalu menggunakan Hibernate 3 dan saya pikir itu luar biasa. Saya sedang melakukan aplikasi e-commerce kecil dan saya mencoba menggunakan Hibernate 4 dan saya sangat kecewa. Mereka telah menghapus alat dan terintegrasi dengan IDE. Saya mencoba MyBatis dan saya bekerja semuanya dalam satu malam dan saya sangat senang dengan betapa mudahnya untuk mengintegrasikan ke dalam aplikasi. Saya pikir Hibernate telah menjadi terlalu kembung dan saya akan menggunakan EJB 3 di atas Hibernate pada saat ini.
sumber