由于java视频里以前好多都是SSH。但是在实际工作中没见过用hibernate的,基本都用mybatis。
我有一些疑问:
hibernate碰到什么样的业务会变成致命的弱点,都说hibernate效率低,能否举个例子(例如同一个查询用mybatis查询耗时1秒,用hibernate查询耗时10秒)
可能是有部分人遇到了hibernate的瓶颈,但是这部分人的业务量我觉得,不是大部分使用hibernate的人都能遇到的。一般的小项目,不超过100个用户,这样的项目综合考虑的话更适合用mybatis还是hibernate?主要从开发效率上来说的话。为什么?
Anda boleh mencuba: http://www.oschina.net/p/monalisa-core Lebih mudah digunakan dengan pemalam Eclipse:
Menyokong penjanaan automatik DTO
Pertanyaan SQL tidak perlu menulis DTO seperti Mybatis, dan kemudian mengkonfigurasi sekumpulan pemetaan medan Pemalam melakukan semuanya secara automatik untuk anda.
Artikel rujukan: Cara menjana DTO secara automatik berdasarkan kod SQL dinamik.
Sintaks rentetan berbilang baris
Menulis rentetan berbilang baris dalam kod Java menjadi sangat mudah.
Operasi Jadual Data
DataTable boleh digunakan untuk menanyakan jadual pangkalan data dengan beberapa pemilihan medan yang mudah, penapisan, pengagregatan, pengelompokan, SERTAI, dll.
hibernate
sesuai untuk penambahan, pemadaman dan pengubahsuaian satu jadual, dan kecekapan pembangunan adalah sangat tinggi Namun, sebaik sahaja perniagaan berkembang atau reka bentukdb
asal tidak bagus, anda perlu menyertai jadual pertanyaan (kerana idea hibernate adalah untuk mengklasifikasikan jadual, tetapi dalam kehidupan sebenar tidak mudah untuk mencapai generalisasi lengkap pada permulaan projek) Hasil yang berbeza ditambah pemadaman dan pemadanan akan mengurangkan kecekapan (melainkan anda menulis sql, tetapi dengan cara ini Adalah lebih baik untuk menggunakan mybatis pada mulanya), terutamanya apabila menghadapi sejumlah besar data, kecekapan akan menurun secara eksponen.Tidak lebih daripada 100 pengguna? , susunan magnitud di sini tidak dikira berdasarkan satu jadual Jika satu jadual melebihi jumlah data tertentu, ia tidak boleh diselesaikan dengan hanya menggunakan
hibernate
ataumybatis
Ia hanya boleh dikatakan lebih mudah untuk menukar jika anda menggunakanmybatis
. Dari pengalaman saya, jika ia melibatkan jumlah pertanyaan join table yang banyak dan perniagaan adalah kompleks (biasanya ini berlaku sehingga tamat projek), sebaiknya gunakanmybatis
yang ringkas lebih cepat daripadahibernate
(开发效率
)Kos pembelajaran hibernate agak tinggi, tetapi terdapat spesifikasi JPA dalam j2ee, dan mempelajari spesifikasinya tidak mengapa. Mybatis agak mudah, mudah digunakan dan boleh dikawal. Hibernate mempunyai kos pembelajaran yang tinggi, terlalu berorientasikan objek, dan sukar untuk ditala. Bagi penggunaan, ia bergantung kepada individu Untuk aplikasi toB atau toC, saya lebih suka mybatis, tetapi untuk backend pengurusan, hibernate boleh
Terima kasih atas jemputan! Jawapan berikut semuanya sangat bagus Pertama, MyBatis mudah dipelajari Kedua, ia fleksibel dan mudah dikawal dengan menulis SQL secara langsung, ia bukan fokus pembangunan .
hiberbate menggunakan objek java untuk menulis sql, manakala mybatis menulis sql asli secara langsung. Yang pertama adalah menyeronokkan untuk dibangunkan untuk seketika dan mengekalkan krematorium (pengubahsuaian yang kedua memerlukan pemahaman tertentu tentang pengetahuan SQL (berbanding dengan yang pertama Jika syarikat itu mempunyai DBA, ia adalah lebih intuitif untuk dia membaca asli). SQL daripada kod Java. Bagi prestasi, dalam kebanyakan kes tidak perlu mempertimbangkannya (jika anda benar-benar ingin mempertimbangkannya, anda boleh mencari "membuang ORM" yang telah dibincangkan oleh sesetengah orang dalam beberapa tahun kebelakangan ini.
Kedua-dua hibernate dan mybatis hanyalah enkapsulasi JDBC Sama ada prestasi program itu baik atau tidak bergantung terutamanya pada sama ada SQL ditulis dengan baik dan sama ada reka bentuk DB adalah munasabah, banyak SQL dalam hibernate dilaksanakan secara pemrograman kedua-dua rangka kerja Mereka semua sangat mahir, dan tidak sepatutnya terdapat banyak perbezaan dalam prestasi apabila digunakan Kemudian masalah itu datang terlalu tertutup, dan sebenarnya agak sukar untuk menguasainya , dan kos pembelajaran adalah rendah Selain itu, hibernate digunakan dalam banyak senario jika anda tidak mahir, kadangkala program yang anda tulis akan mempunyai situasi yang tidak dijangka keputusan program biasanya lebih mudah untuk diramalkan masalah timbul.
Kedua-dua rangka kerja sebenarnya direka dengan sangat baik, tetapi tabiat penggunaan peribadi adalah lebih penting Orang yang sudah biasa dengan mybatis biasanya akan sukar untuk beralih ke hibernate, sebaliknya, orang yang benar-benar mahir dalam hibernate mungkin tidak menggunakannya dengan sengaja mybatis (pendapat rendah diri).
Menggunakan Mybatis dalam kerja sebenar pada asasnya bukan berdasarkan pertimbangan prestasi atau kebolehgunaan, tetapi berdasarkan tabiat peribadi.
Pengaturcara lama seperti kami sudah biasa menulis SQL, dan akan berasa tidak selesa jika kami tidak menulisnya. Sebaliknya, hibernate yang terlalu automatik boleh membuatkan kita panik.
Itu sahaja.
Setelah menggunakannya semasa peringkat pembelajaran, perasaan peribadi saya adalah bahawa hibernate terlalu terkandung. Banyak kali rasanya ia tidak membawa kemudahan, tetapi saya perlu melakukan beberapa operasi yang kelihatan tidak perlu untuk "menyelaraskan" dengan rangka kerja ini.
Jika volum perniagaan agak kecil, bergantung pada yang mana anda lebih mahir. Ia akan baik-baik saja. Tidak perlu risau tentang perkara ini. Mybatis lebih fleksibel, memberikan lebih banyak ruang kepada pembangun untuk pelaksanaan mereka sendiri. Perkaitan hibernate sepatutnya menjadi sebab mengapa ia lebih perlahan.