Kata pengantar
Dalam pengembangan Javaweb, yang paling klasik adalah kombinasi kerangka kerja SSH dan kombinasi kerangka kerja SSM. Sekarang banyak perusahaan IT bersedia menggunakan SSM. Untuk H dan M di sini, Hibernate dan Mybatis, izinkan saya membicarakannya secara singkat hari ini.
Bermain kapak di pintu
Selama kelas, saya sering memberi tahu siswa bahwa Anda harus memahami teknik apa pun:
Penjelasan Pengetahuan
Hibernate dan mybatis keduanya sangat populer ORM (pemetaan objek-relasional, terus terang, sebuah teknologi yang memetakan ke database) kerangka kerja lapisan persistensi. Intinya, masih dienkapsulasi JDBC untuk memfasilitasi penggunaan kami dan menyederhanakan pengembangan kami. Mari kita cari tahu beberapa masalah terlebih dahulu:
Mengapa pengenalan lapisan kegigihan dapat menyelesaikan masalah ini? Analisis: Suatu mekanisme dapat diperkenalkan di lapisan persistensi, yang dapat digunakan sebagai terjemahan. Untuk database yang berbeda di bagian bawah, pernyataan HQL dan pernyataan kueri dinamis diterjemahkan ke dalam pernyataan SQL yang berbeda. Ini memecahkan masalah bahwa tidak perlu mengubah pernyataan SQL setelah mengganti database, dan jumlah kode akan sangat berkurang.
Ini sangat bagus, jadi bagaimana Hibernate dan Mybatis menerapkan solusi di atas, yaitu, bagaimana ORM mereka diimplementasikan?
Hibernate
Dalam Hibernate, mekanisme ini adalah file konfigurasi hibernate.cfg.xml (ditempatkan di direktori src)
<Hibernate-Configuration> <sesi-factory> <name properti = "connection.url"> jdbc: mysql: // localhost/hibernate </property> <name properti = "connection.userName"> root </propert> <properti nama = "connection.password"> properti </properti> <properti> Properti> Properti </properti> <properti = "connection.password"> Saber </properti> <properti> Properti> Properti> Properti> Properti </ver Propert> name = "connection.driver_class"> com.mysql.jdbc.driver </property> <property name = "dialect"> org.hibernate.dialect.mysqldialect </proper name = "format_sql"> true </propt> <!-konfigurasi kumpulan koneksi-> <name properti = "hibernate.connection.provider_class"> org.hibernate.service.jdbc.connections.internal.c3p0connectionProvider </soport> <!-Jumlah minimum JDBC di JDB. Hibernate default ke 1-> <name properti = "hibernate.c3p0.min_size"> 5 </propt> <!-Jumlah maksimum koneksi JDBC di kumpulan koneksi. Hibernate default ke 100-> <name properti = "hibernate.c3p0.max_size"> 20 </propt> <!-Kapan menghapus koneksi idle dalam hitungan detik dari kumpulan koneksi. Standarnya adalah 0, tidak pernah kedaluwarsa-> <name properti = "hibernate.c3p0.timeout"> 300 </propt> <!-Jumlah pernyataan yang dikompilasi. Digunakan untuk meningkatkan kinerja. Hibernate default ke 0, cache tidak tersedia-> <name properti = "hibernate.c3p0.max_statements"> 100 </propt> <!-waktu idle (dalam detik) sebelum koneksi diverifikasi secara otomatis. Hibernate default ke 0-> <name properti = "hibernate.c3p0.idle_test_period"> 3000 </propt> <!-berjalan secara mandiri. Jika Anda mendapatkan sesi melalui getCurrentSession (), Anda perlu mengaturnya sebagai berikut-> <name properti = "current_session_context_class"> Thread </preate> <!-Dua cara untuk memetakan kelas persisten-> <pemetaan/> <pemetaan sumber daya = "com/serup/model/guru.
Setelah proyek mengubah database, apa yang perlu dimodifikasi hanyalah beberapa atribut dalam file ini, dan kode logika lapisan bisnis tidak perlu dimodifikasi.
Menggunakan Hibernate untuk pengembangan direkomendasikan:
** Objek Domain ---> Pemetaan ---> Database Dengan kata lain, objek dan tabel perlu memiliki pemetaan, dan pemetaan ini memiliki dua metode konfigurasi dalam Hibernate **
1. Metode XML (nama kelas.hbm.xml)
Menetapkan hubungan pemetaan antara tabel dan kelas melalui file HBM
2. Metode Anotasi
Kemudian, dengan rekayasa terbalik, itu menjadi jauh lebih sederhana, dan Anda dapat secara langsung menghasilkan file yang sesuai melalui tabel database.
Mybatis
Di mybatis, mekanisme ini juga bergantung pada file konfigurasi mybatis-config.xml (ditempatkan di direktori src)
<Configuration> <Properties Resource = "sqlServerInfo.properties"/> <!-File konfigurasi database-> <yypealiases> <package name = "com.demo.domain"/> <!-pindai paket alias = "pengembangan" "ID </TypeLies> </Environes> FRANSACH =" LINGKUNGAN "" LINGKUNG "" DIVINGRIAGE = "LINGKUNGAN" "DIVERVING" "LINGRIVENT" DIVINGRIACE = "LINGRIVENT" DIVINGRIACE = "LINGRIVENT" DIVINGRIACE = "LINGRIVENT" DIVINGRIACES = "LINGRIVENT" DIVINGRIACES = "LINGRION" </TYPLOURGET " type = "jdbc"/> <datasource type = "pooled"> <properti name = "driver" value = "$ {driver}"/> <name properti = "url" value = "$ {url}"/> <nama properti = "name" nilai = "$ {UserName}"/<nama properti = "name =" never axthame = "$" $ " </Environments> <Mappers> <!-Memetakan file untuk menyelesaikan operasi CRUD tertentu-> <mapper Resource = "com/demo/domain/usermapper.xml"/> </phappers> </configuration> Dengan cara ini, setiap kali Anda mengubah database, Anda hanya perlu memodifikasi file konfigurasi.
Menggunakan MyBatis untuk pengembangan merekomendasikan ini:
** Buat database dan buat berbagai tabel ---> Reverse Engineering secara otomatis menghasilkan kode yang diperlukan untuk eksekusi mybatis (mapper.java, mapper.xml, po ..) ---> tulis lapisan kontrol dan lapisan layanan sesuai dengan logika bisnis. **
Perbedaan
Ada berbagai perbandingan di internet, dan saya hanya berbicara tentang beberapa poin berbeda yang saya pikir
1. Hibernate memiliki bahasa kueri berorientasi objek yang disebut HQL. Ini sangat kuat. Ini memungkinkan kera yang tidak tahu pernyataan SQL untuk menambah, menghapus, memodifikasi, dan mencari database, tetapi ini juga kelemahannya. Pernyataan SQL tidak dapat dioptimalkan.
2. Mybatis membutuhkan konfigurasi pernyataan SQL, yang berarti masih membutuhkan pengetahuan dasar dari database untuk memulai. Selain itu, pemula pasti telah menemukan banyak jebakan dalam pemetaan hasil.
3. Saya tidak pernah melakukan proyek yang sangat besar. Jika tidak ada persyaratan kinerja khusus, Hibernate masih lebih mudah untuk mengimplementasikan fungsi.
Penyetelan sistem
Solusi tuning Hibernate
Solusi tuning mybatis
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.