Rumah  >  Soal Jawab  >  teks badan

java - 关于mybatis和hibernate的困惑

谢谢

巴扎黑巴扎黑2766 hari yang lalu1572

membalas semua(19)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-18 09:34:16

    Terdapat soalan serupa tentang Zhihu.
    Jawapan yang saya lihat undian tinggi ialah hibernate lebih sukar untuk dikuasai daripada mybatis, dan kawalan SQL adalah lebih lemah.

    balas
    0
  • 黄舟

    黄舟2017-04-18 09:34:16

    Menulis mb sql ke dalam xml juga memerlukan penghuraian, dan kecekapannya tidak jauh lebih tinggi

    balas
    0
  • PHPz

    PHPz2017-04-18 09:34:16

    Bandingkan hubungan antara keduanya dan berikan pertimbangan dari tiga aspek: kecekapan pembangunan, kebolehselenggaraan dan prestasi. Dari segi kepentingannya, dalam proses pembangunan kejuruteraan projek, kecekapan pembangunan > kebolehselenggaraan > prestasi. Mungkin bagi sesetengah perniagaan, prestasi adalah lebih kritikal, tetapi melihat kepada keadaan keseluruhan, saya secara peribadi merasakan kecekapan pembangunan > kebolehselenggaraan > prestasi.

    Pertama sekali, kecekapan pembangunan. Secara peribadi, saya merasakan bahawa jika anda melakukan beberapa projek mudah seperti CMS dengan hanya penambahan, pemadaman, pengubahsuaian dan pertanyaan yang mudah, maka menggunakan Hibernate adalah lebih berfaedah Anda tidak perlu menguasai terlalu banyak pengetahuan Hibernate, anda hanya perlu tahu beberapa pertanyaan asas dan beberapa konfigurasi (Hibernate adalah benar-benar Untuk belajar, saya secara peribadi merasakan bahawa jumlah pengetahuan adalah lebih besar daripada mybatis). hiberbate menggunakan objek java untuk menulis sql, manakala mybatis menulis sql asli secara langsung. Hibernate menyediakan mekanisme pemetaan yang baik, dan mybatis juga perlu menulis resultmap paramMap sendiri. Hibernate dan MyBatis kedua-duanya mempunyai alat penjanaan kod yang sepadan. Kaedah lapisan DAO yang mudah dan asas boleh dihasilkan. Untuk pertanyaan lanjutan, Mybatis memerlukan penulisan manual pernyataan SQL dan ResultMap. Hibernate mempunyai mekanisme pemetaan yang baik Pembangun tidak perlu mengambil berat tentang penjanaan SQL dan pemetaan hasil, dan boleh menumpukan lebih pada proses perniagaan. Kesimpulannya, dari perspektif kecekapan pembangunan, Hibernate>

    Kebolehselenggaraan: hiberbate menggunakan objek java untuk menulis sql, manakala mybatis menulis sql asli secara langsung. Menulis SQL secara langsung adalah lebih mudah untuk dikekalkan, tetapi yang pertama memerlukan melihat SQL melalui objek java Anda perlu mencetak SQL menggunakan System.out.println(sql); Pertanyaan Hibernate akan menanyakan semua medan dalam jadual, yang akan menggunakan prestasi. Hibernate juga boleh menulis SQL sendiri untuk menentukan medan yang perlu ditanya, tetapi ini memusnahkan kesederhanaan pembangunan Hibernate. SQL Mybatis ditulis secara manual, jadi medan pertanyaan boleh ditentukan mengikut keperluan. Menala kenyataan HQL Hibernate memerlukan mencetak SQL, dan SQL Hibernate tidak disukai oleh ramai orang kerana ia terlalu hodoh. SQL MyBatis ditulis secara manual oleh saya sendiri, jadi ia mudah untuk disesuaikan. Tetapi Hibernate mempunyai statistik log sendiri. Mybatis sendiri tidak mempunyai statistik log dan menggunakan Log4j untuk pembalakan.

    Prestasi: Kedua-duanya menyediakan mekanisme caching dan sesi. Projek kecil hampir sama. Projek besar mybatis>hibernate.

    balas
    0
  • 黄舟

    黄舟2017-04-18 09:34:16

    Melihat perbincangan semua orang, saya rasa mybaits lebih baik, tetapi saya selalu fikir hibernate lebih sesuai untuk pembangunan berskala besar, jadi saya terus ke hibernate. Pada masa itu, projek itu agak mendesak dan saya menggunakannya seperti mybatis Kemudian, selepas bermain untuk masa yang lama, saya dapati banyak perkara menarik Pengalaman yang disediakan oleh hibernate memudahkan banyak beban kerja dan keserasian, tetapi ini pasti memerlukan pengalaman untuk memahami, dan kemudiannya Ia berguna untuk menggunakan carian hibernate dan carian teks penuh, jadi tiada cara untuk mengubahnya, anda boleh menulis sql atau hql asli Terdapat juga alat konfigurasi xml, dan anotasi tambahan juga fleksibel. Ia juga boleh menjana satu2banyak dan banyak2 struktur data yang berbeza daripada sql asli , ringkasnya, dia seorang yang sangat komprehensif Jika anda belum menyesal, teruskan belajar. Secara amnya, alat hibernate digunakan untuk membuat pemetaan Java dan XML secara automatik bagi semua jadual untuk melakukan carian umum, pemadaman dan pengubahsuaian, kemudian menyalin kod Java dan menamakannya semula, menggunakan anotasi untuk mencipta persatuan secara manual dan memadamkan medan yang tidak diperlukan.

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:34:16

    1. Soalan 1: Dalam keadaan apakah Hibernate akan menjadi 10 kali lebih perlahan daripada MyBatis?

    Apabila Hibernate digunakan secara tidak betul, sesuatu akan berlaku: P
    Contohnya, jika pemuatan objek terbenam B dalam objek Hibernate A ditukar daripada pemuatan lalai lalai kepada pramuat (dengan andaian anda tidak memahami kesannya, Baru sahaja menukar konfigurasi), jika anda ingin menanyakan senarai objek A, akan ada pertanyaan N+1, tetapi kebanyakan logik perniagaan anda tidak perlu membaca objek B terbenam, dan prestasinya akan menjadi sangat lemah.
    Dan secara amnya Dalam kes MyBatis, pertanyaan seperti ini perlu ditulis dengan tangan. Kebarangkalian ini berlaku adalah kecil.

    JPA (Hibernate) merangkumi rangkaian kandungan yang sangat luas dan mempunyai banyak teknik pengoptimuman Ia memerlukan banyak wang untuk membiasakan diri dengannya (Buku Hibernate In Action yang saya miliki sangat tebal dan menakutkan Saya mengambil masa yang lama untuk membacanya. Selepas membacanya), saya tidak tahu berapa ramai pengaturcara yang suka membaca dan mempunyai kesabaran.

    Namun, MyBatis adalah lebih mudah untuk bermula Walaupun prestasi MyBatis akan berkali-kali lebih teruk daripada Hibernate jika digunakan secara salah, tetapi MyBatis tidaklah begitu rumit, jadi peluang untuk melakukan kesilapan adalah jauh lebih kecil.

    2. Soalan 2: Perlukah saya menggunakan MyBatis atau Hibernate untuk projek kecil

    Jika anda sangat berminat dengan Hibernate dan ingin membiasakannya, saya cadangkan anda mencubanya Lagipun, kebanyakan projek perlu menghasilkan hasil dengan cepat
    Hibernate adalah lebih mudah daripada MyBatis dalam hal ini banyak lagi (sudah tentu MyBatis mempunyai cara untuk menjana kod secara automatik, tetapi ia masih lebih menyusahkan).
    Jika projek seterusnya berkembang dengan baik dan memerlukan berbilang orang untuk bekerjasama dalam pembangunan, pastikan anda menjauhkan orang baru daripada logik kod lapisan kegigihan.

    balas
    0
  • 黄舟

    黄舟2017-04-18 09:34:16

    Ringkasnya, Hibernate adalah berorientasikan objek dan MyBatis adalah berorientasikan SQL. Mana satu yang anda pilih bergantung pada yang mana satu yang biasa digunakan oleh kakitangan anda, sama ada perniagaan anda akan mempunyai banyak pertanyaan yang rumit dan sama ada perniagaan anda mempunyai keperluan prestasi tinggi. Di samping itu, banyak kali orang tidak biasa dengan Hibernate, jadi mereka merasakan bahawa Hibernate tidak boleh melakukan ini, atau sangat rumit untuk melakukannya. Hibernate berkata bahawa saya tidak akan memikul tanggungjawab ini. . .

    balas
    0
  • 迷茫

    迷茫2017-04-18 09:34:16

    Secara peribadi, saya juga fikir hibernate adalah mudah untuk digunakan secara automatik. Masalah prestasi ialah pertanyaan berkaitan.

    balas
    0
  • PHPz

    PHPz2017-04-18 09:34:16

    Kini kami menggunakan kunci asing yang logik semasa pembangunan tanpa perkaitan jadual, jadi kecekapan pembangunan adalah hampir sama dan jelas, SQL lebih serba boleh dan kerjasama lebih mudah.

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:34:16

    Teknologi tidak baik atau buruk, hanya sama ada ia sesuai atau tidak, dan boleh menyelesaikan masalah tertentu dalam keadaan tertentu. Orang yang berbeza menggunakan hibernate akan menghasilkan hasil yang berbeza Jika anda mahir dalam hibernate, prestasi tidak menjadi masalah. Saya melihat begitu banyak perbandingan antara kedua-dua yang disebutkan di atas, tetapi mereka benar-benar tidak masuk akal.

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 09:34:16

    Secara umumnya, hibernate tidak cukup fleksibel dan enkapsulasi terlalu dalam. Mybatis boleh mengkonfigurasi operasi yang diingini mengikut kehendak anda

    balas
    0
  • Batalbalas