-
Bagaimana cara kerja Hibernate dan mengapa Anda harus menggunakannya?
prinsip:
1. Baca dan parsing file konfigurasi
2. Membaca dan mengurai informasi pemetaan dan membuat SessionFactory
3. Sesi Terbuka
4. Buat transaksi Transasi
5. Operasi ketekunan
6. Kirim transaksi
7.Tutup Sesi
8. Tutup SessionFactory
Mengapa menggunakan:
1. Kode untuk akses JDBC ke database dienkapsulasi, yang sangat menyederhanakan kode yang membosankan dan berulang di lapisan akses data.
2. Hibernate adalah kerangka persistensi arus utama berdasarkan JDBC dan implementasi ORM yang sangat baik. Ini sangat menyederhanakan pekerjaan pengkodean lapisan DAO.
3. hibernasi menggunakan mekanisme refleksi Java alih-alih program peningkatan bytecode untuk mencapai transparansi.
4. Performa hibernate sangat baik karena merupakan framework yang ringan. Fleksibilitas pemetaannya luar biasa. Ini mendukung berbagai database relasional, mulai dari hubungan kompleks satu-ke-satu hingga banyak-ke-banyak.
2. Bagaimana cara Hibernate memuat dengan lambat?
1. Implementasi pemuatan lambat Hibernate2: a) objek entitas b) koleksi (Koleksi)
2. Hibernate3 menyediakan fungsi pemuatan properti yang lambat
Ketika Hibernate menanyakan data, data tidak ada di memori. Ketika program benar-benar beroperasi pada data, objek ada di memori, sehingga mencapai pemuatan lambat. Ini menghemat overhead memori server, sehingga meningkatkan kinerja server . pertunjukan.
3. Bagaimana cara mewujudkan hubungan antar kelas di Hibernate (seperti: hubungan satu-ke-banyak, banyak-ke-banyak)
Hubungan antar kelas terutama tercermin dalam pengoperasian hubungan antar tabel, semuanya beroperasi pada objek. Semua tabel dan kelas dipetakan bersama dalam program kami, dan dipetakan bersama melalui banyak ke dalam file konfigurasi. satu ke banyak, banyak ke banyak,
4. Mari kita bicara tentang mekanisme caching Hibernate
1. Cache internal ada di Hibernate, juga disebut cache tingkat pertama, yang termasuk dalam cache tingkat transaksi aplikasi.
2. Cache tingkat kedua:
a) Aplikasi dan cache
b) Kondisi cache terdistribusi: data tidak akan diubah oleh pihak ketiga, ukuran data berada dalam kisaran yang dapat diterima, frekuensi pembaruan data rendah, data yang sama sering digunakan oleh sistem, data tidak penting
c) Implementasi cache pihak ketiga
5. Metode kueri hibernasi
Sql, Kriteria, komposisi objek
Hql:
1. Kueri atribut
2. Kueri parameter, bernama kueri parameter
3. Permintaan terkait
4. Permintaan halaman
5. Fungsi statistik
6. Bagaimana cara mengoptimalkan Hibernasi?
1. Gunakan pengaitan satu-ke-banyak dua arah, bukan pengaitan satu-ke-banyak satu arah.
2. Penggunaan asosiasi satu-ke-banyak satu arah secara fleksibel
3. Daripada menggunakan satu-ke-satu, gunakan banyak-ke-satu.
4. Konfigurasikan cache objek dan jangan gunakan cache koleksi
5. Gunakan Tas untuk koleksi satu-ke-banyak dan Set untuk koleksi banyak-ke-banyak.
6. Gunakan polimorfisme eksplisit di kelas yang diwarisi
7. Bidang tabel harus lebih sedikit, jangan takut dengan terlalu banyak asosiasi tabel, dan dapatkan dukungan cache tingkat kedua.
7. Bagaimana cara kerja Struts? Mengapa menggunakan Struts?
Mekanisme kerja:
Alur kerja penyangga:
Ketika aplikasi web dimulai, inisialisasi ActionServlet akan dimuat
Membaca informasi konfigurasi dari file struts-config.xml dan menyimpannya di berbagai objek konfigurasi. Ketika ActionServlet menerima permintaan pelanggan, ia akan menjalankan proses berikut.
-(1) Ambil instance ActionMapping yang cocok dengan permintaan pengguna. Jika tidak ada, kembalikan informasi jalur permintaan yang tidak valid;
-(2) Jika instance ActionForm tidak ada, buat objek ActionForm dan simpan data formulir yang dikirimkan oleh pelanggan ke dalam objek ActionForm;
-(3) Tentukan apakah validasi formulir diperlukan berdasarkan informasi konfigurasi. Jika validasi diperlukan, panggil metode validasi() ActionForm;
-(4) Jika metode validasi() ActionForm mengembalikan null atau mengembalikan objek ActuibErrors yang tidak berisi ActionMessage, itu berarti validasi formulir berhasil;
-(5) ActionServlet memutuskan Action mana yang akan meneruskan permintaannya berdasarkan informasi pemetaan yang terkandung dalam ActionMapping. Jika instance Action yang sesuai tidak ada, pertama-tama buat instance ini dan kemudian panggil metode eksekusi() Action;
-(6) Metode eksekusi() tindakan mengembalikan objek ActionForward, dan ActionServlet meneruskan permintaan pelanggan ke komponen JSP yang ditunjuk oleh objek ActionForward;
-(7) Objek ActionForward menunjuk ke komponen JSP untuk menghasilkan halaman web dinamis dan mengembalikannya ke pelanggan;
Mengapa menggunakan:
Munculnya teknologi JSP, Servlet, dan JavaBean memungkinkan kita membangun sistem aplikasi perusahaan yang kuat. Namun sistem yang dibangun dengan teknologi ini sangat rumit, jadi selain itu, kita memerlukan aturan, aturan untuk mengatur teknologi ini. Inilah kerangka kerjanya, dan Struts pun terbentuk.
Aplikasi yang dikembangkan berdasarkan Struts terdiri dari tiga jenis komponen: komponen pengontrol, komponen model, dan komponen tampilan.
8. Bagaimana kerangka validasi Struts memverifikasi?
Konfigurasikan perintah kesalahan tertentu di file konfigurasi struts, lalu panggil metode validasi() secara khusus di FormBean.
9. Mari kita bicara tentang pola desain Struts
Mode MVC: ActionServler dimuat dan diinisialisasi ketika aplikasi web dimulai. Saat pengguna mengirimkan formulir, objek ActionForm yang dikonfigurasi dibuat dan diisi dengan data formulir yang sesuai. ActionServler menentukan apakah validasi formulir diperlukan berdasarkan pengaturan yang dikonfigurasi dalam file Struts-config.xml Validasi() dari ActionForm. Setelah verifikasi, pilih Action mana yang akan dikirimi permintaan. Jika Action tidak ada, ActionServlet pertama-tama akan membuat objek ini dan kemudian memanggil metode eksekusi() Action. Execute() memperoleh data dari objek ActionForm, melengkapi logika bisnis, dan mengembalikan objek ActionForward. ActionServlet kemudian meneruskan permintaan pelanggan ke komponen jsp yang ditentukan oleh objek ActionForward. Jsp yang ditentukan oleh objek ActionForward menghasilkan halaman web dinamis dan mengembalikannya ke pelanggan.
10. Bagaimana cara kerja pegas dan mengapa harus digunakan?
1. Spring MVC meminta semua permintaan untuk diserahkan ke DispatcherServlet, yang akan mempercayakan modul lain dari sistem aplikasi untuk bertanggung jawab atas pemrosesan permintaan yang sebenarnya.
2.DispatcherServlet menanyakan satu atau lebih HandlerMapping untuk menemukan Pengendali yang menangani permintaan tersebut.
3.DispatcherServlet silakan kirimkan permintaan ke Pengendali target
4. Setelah Pengontrol melakukan pemrosesan logika bisnis, ia akan mengembalikan ModelAndView
5.Dispathcher menanyakan satu atau lebih parser tampilan ViewResolver untuk menemukan objek tampilan yang ditentukan oleh objek ModelAndView
6. Objek tampilan bertanggung jawab untuk merender dan mengembalikannya ke klien.
Mengapa menggunakan:
{AOP memungkinkan pengembang untuk membuat masalah non-perilaku, yang disebut masalah lintas sektoral, dan memasukkannya ke dalam kode aplikasi. Setelah menggunakan AOP, layanan publik (seperti logging, persistensi, transaksi, dll.) dapat didekomposisi menjadi beberapa aspek dan diterapkan pada objek domain tanpa menambah kompleksitas model objek objek domain.
IOC memungkinkan pembuatan lingkungan aplikasi yang dapat membangun objek dan kemudian meneruskan objek tersebut ke objek kolaborasinya. Seperti yang ditunjukkan oleh kata inversi, IOC seperti JNDI yang terbalik. Daripada menggunakan sekelompok pabrik abstrak, pencari layanan, singleton, dan konstruksi lurus, setiap objek dibangun dari objek-objek yang berkolaborasi. Oleh karena itu, container mengelola objek kolaborasi (kolaborator).
Meskipun Spring adalah kerangka kerja AOP, Spring juga merupakan wadah IOC. Hal terbaik tentang Spring adalah membantu Anda mengganti objek. Dengan Spring, cukup tambahkan dependensi (objek yang berkolaborasi) menggunakan properti JavaBean dan file konfigurasi. Kemudian mudah untuk mengganti objek yang berkolaborasi dengan antarmuka serupa bila diperlukan. }
Kerangka kerja pegas adalah arsitektur berlapis yang terdiri dari 7 modul yang terdefinisi dengan baik. Modul pegas dibangun di atas wadah inti, yang menentukan cara membuat, mengonfigurasi, dan mengelola kacang, seperti yang ditunjukkan pada Gambar 1.
Setiap modul (atau komponen) yang membentuk kerangka Spring dapat berdiri sendiri atau diimplementasikan bersama dengan satu atau lebih modul lainnya. Fungsi masing-masing modul adalah sebagai berikut:
☆ Wadah inti: Wadah inti menyediakan fungsi dasar kerangka pegas. Komponen utama dari wadah inti adalah BeanFactory, yang merupakan implementasi pola pabrik. BeanFactory menggunakan pola Inversion of Control (IOC) untuk memisahkan konfigurasi aplikasi dan spesifikasi ketergantungan dari kode aplikasi sebenarnya.
☆ Konteks pegas: Konteks pegas adalah file konfigurasi yang memberikan informasi konteks ke kerangka pegas. Konteks musim semi mencakup layanan perusahaan seperti JNDI, EJB, email, internasionalisasi, validasi, dan fungsi pengiriman.
☆ Spring AOP: Melalui fitur manajemen konfigurasi, modul Spring AOP secara langsung mengintegrasikan fungsi pemrograman berorientasi aspek ke dalam kerangka Spring. Oleh karena itu, mudah untuk membuat objek apa pun yang dikelola oleh kerangka Spring mendukung AOP. Modul Spring AOP menyediakan layanan manajemen transaksi untuk objek dalam aplikasi berbasis Spring. Dengan menggunakan Spring AOP, Anda dapat mengintegrasikan manajemen transaksi deklaratif ke dalam aplikasi Anda tanpa bergantung pada komponen EJB.
☆ Spring DAO: Lapisan abstraksi JDBC DAO menyediakan hierarki pengecualian bermakna yang dapat digunakan untuk mengelola penanganan pengecualian dan pesan kesalahan yang diberikan oleh vendor database berbeda. Hierarki pengecualian menyederhanakan penanganan kesalahan dan sangat mengurangi jumlah kode pengecualian yang perlu ditulis (seperti membuka dan menutup koneksi). Pengecualian berorientasi JDBC Spring DAO mengikuti hierarki pengecualian DAO umum.
☆ Spring ORM: Kerangka Spring menyisipkan beberapa kerangka ORM untuk menyediakan alat relasional objek ORM, termasuk JDO, Hibernate dan iBatis SQL Map. Semua ini mematuhi transaksi umum Spring dan hierarki pengecualian DAO.
☆ Modul Spring Web: Modul konteks Web dibangun di atas modul konteks aplikasi dan menyediakan konteks untuk aplikasi berbasis Web. Oleh karena itu, kerangka Spring mendukung integrasi dengan Jakarta Struts. Modul web juga menyederhanakan penanganan permintaan multibagian dan mengikat parameter permintaan ke objek domain.
☆ Kerangka kerja Spring MVC: Kerangka kerja MVC adalah implementasi MVC berfitur lengkap untuk membangun aplikasi Web. Melalui antarmuka strategi, kerangka MVC menjadi sangat dapat dikonfigurasi, dan MVC mengakomodasi sejumlah besar teknologi tampilan, termasuk JSP, Velocity, Tiles, iText, dan POI.
Fitur Spring Framework dapat digunakan di server J2EE mana pun, dan sebagian besar fitur juga cocok untuk lingkungan yang tidak dikelola. Inti dari Spring adalah untuk mendukung bisnis yang dapat digunakan kembali dan objek akses data yang tidak terikat pada layanan J2EE tertentu. Tidak ada keraguan bahwa objek tersebut dapat digunakan kembali antara lingkungan J2EE yang berbeda (Web atau EJB), aplikasi yang berdiri sendiri, dan lingkungan pengujian.
IOC dan AOP
Konsep dasar pola Inversi Kontrol (juga disebut intervensi ketergantungan) adalah Anda tidak membuat objek, namun Anda menjelaskan cara membuatnya. Itu tidak terhubung langsung ke objek dan layanan dalam kode, tetapi komponen mana yang memerlukan layanan mana yang dijelaskan dalam file konfigurasi. Wadah (dalam kerangka Spring, wadah IOC) bertanggung jawab untuk mengikatnya bersama-sama.
Dalam skenario IOC pada umumnya, kontainer membuat semua objek dan menetapkan properti yang diperlukan untuk menghubungkannya bersama-sama dan memutuskan kapan harus memanggil metode. Tabel berikut mencantumkan mode implementasi IOC.
Kontainer IOC kerangka Spring diimplementasikan menggunakan tipe 2 dan tipe 3.
pemrograman berorientasi aspek
Pemrograman berorientasi aspek, atau AOP, adalah teknik pemrograman yang memungkinkan pemrogram untuk memodulasi perilaku yang melintasi masalah atau tanggung jawab umum, seperti pencatatan log dan manajemen transaksi. Konstruksi inti AOP adalah aspek, yang merangkum perilaku yang mempengaruhi beberapa kelas ke dalam modul yang dapat digunakan kembali.
AOP dan IOC adalah teknologi pelengkap yang menggunakan pendekatan modular untuk memecahkan masalah kompleks dalam pengembangan aplikasi perusahaan. Dalam pendekatan pengembangan berorientasi objek pada umumnya, pernyataan logging dapat ditempatkan di semua metode dan kelas Java untuk mengimplementasikan fungsionalitas logging. Dalam pendekatan AOP, layanan logging pada gilirannya dapat dimodulasi dan diterapkan secara deklaratif ke komponen yang memerlukan logging. Tentu saja keuntungannya adalah kelas Java tidak perlu mengetahui keberadaan layanan log, juga tidak perlu mempertimbangkan kode terkait. Oleh karena itu, kode aplikasi yang ditulis dalam Spring AOP digabungkan secara longgar.
Fungsionalitas AOP terintegrasi penuh ke dalam konteks manajemen transaksi Spring, logging, dan berbagai fitur lainnya.
wadah IOC
Inti dari desain Spring adalah paket org.springframework.beans, yang dirancang untuk digunakan dengan komponen JavaBean. Paket ini biasanya tidak digunakan secara langsung oleh pengguna, namun digunakan oleh server sebagai perantara tingkat rendah untuk sebagian besar fungsi lainnya. Abstraksi tingkat tertinggi berikutnya adalah antarmuka BeanFactory, yang merupakan implementasi pola desain Pabrik dan memungkinkan objek dibuat dan diambil berdasarkan namanya. BeanFactory juga dapat mengelola hubungan antar objek.
BeanFactory mendukung dua model objek.
□ Model monomorfik menyediakan instance bersama dari suatu objek dengan nama tertentu yang dapat diambil pada waktu kueri. Singleton adalah model objek default dan paling umum digunakan. Ideal untuk objek layanan tanpa kewarganegaraan.
□ Model prototipe memastikan bahwa objek terpisah dibuat untuk setiap pengambilan. Model prototipe paling cocok ketika setiap pengguna membutuhkan objeknya sendiri.
Konsep pabrik kacang menjadi dasar Spring sebagai wadah IOC. IOC mengalihkan tanggung jawab penanganan berbagai hal dari kode aplikasi ke kerangka kerja. Seperti yang akan saya tunjukkan pada contoh berikutnya, framework Spring menggunakan properti JavaBean dan data konfigurasi untuk menunjukkan dependensi mana yang harus disetel.
Antarmuka BeanFactory
Karena org.springframework.beans.factory.BeanFactory adalah antarmuka yang sederhana, maka dapat diimplementasikan untuk berbagai metode penyimpanan dasar. Definisi BeanFactory yang paling umum digunakan adalah XmlBeanFactory, yang memuat kacang berdasarkan definisi dalam file XML, seperti yang ditunjukkan pada Listing 1.
Daftar 1. XmlBeanFactory
Pabrik BeanFactory = XMLBeanFactory baru(FileInputSteam baru("mybean.xml"));
Kacang yang didefinisikan dalam file XML dimuat secara pasif, yang berarti kacang itu sendiri tidak diinisialisasi sampai kacang tersebut dibutuhkan. Untuk mengambil kacang dari BeanFactory, cukup panggil metode getBean(), dengan meneruskan nama kacang yang akan diambil, seperti yang ditunjukkan pada Listing 2.
Daftar 2.getBean()
MyBean mybean = (MyBean) pabrik.getBean("mybean");
Setiap definisi kacang dapat berupa POJO (didefinisikan dengan nama kelas dan properti inisialisasi JavaBean) atau FactoryBean. Antarmuka FactoryBean menambahkan tingkat tipuan pada aplikasi yang dibangun menggunakan kerangka Spring.
Contoh IOC
Cara termudah untuk memahami inversi kendali adalah dengan melihatnya dalam tindakan. Saya mengakhiri Bagian 1 dari tiga bagian seri Spring saya dengan contoh yang menunjukkan cara memasukkan dependensi aplikasi Anda (alih-alih membangunnya) melalui container Spring IOC.
Saya menggunakan use case pembukaan rekening kredit online sebagai titik awal. Untuk implementasi ini, pembukaan rekening kredit mengharuskan pengguna untuk berinteraksi dengan layanan berikut:
☆Layanan pemeringkatan kredit, menanyakan informasi riwayat kredit pengguna.
☆ Layanan penautan pesan jarak jauh untuk memasukkan informasi pelanggan dan menghubungkan informasi pelanggan dengan informasi kartu kredit dan bank untuk debit otomatis (jika diperlukan).
☆ Layanan email untuk mengirim email tentang status kartu kredit kepada pengguna.
tiga antarmuka
Untuk contoh ini, saya berasumsi bahwa layanan sudah ada dan idealnya mengintegrasikannya dengan cara yang digabungkan secara longgar. Daftar berikut menunjukkan API untuk ketiga layanan tersebut.
Daftar 3. Antarmuka Peringkat Kredit
antarmuka publik CreditRatingInterface {
boolean publik getUserCreditHistoryInformation(ICustomer iCustomer);
}
Antarmuka peringkat kredit yang ditunjukkan pada Listing 3 menyediakan informasi riwayat kredit. Ini memerlukan objek Pelanggan yang berisi informasi pelanggan. Implementasi antarmuka ini disediakan oleh kelas CreditRating.
Daftar 4. Antarmuka Tautan Kredit
antarmuka publik CreditLinkingInterface {
String publik getUrl();
kekosongan publik setUrl(String url);
public void linkCreditBankAccount() memunculkan Pengecualian;
}
Antarmuka penautan kredit menggabungkan informasi riwayat kredit dengan informasi perbankan (jika diperlukan) dan memasukkan informasi kartu kredit pengguna. Antarmuka tautan kredit adalah layanan jarak jauh, dan kuerinya dilakukan melalui metode getUrl(). URL diatur oleh mekanisme konfigurasi kacang kerangka Spring, yang akan saya bahas nanti. Implementasi antarmuka ini disediakan oleh kelas CreditLinking.
Daftar 5. Antarmuka Email
antarmuka publik Antarmuka Email {
public void sendEmail(ICustomer iCustomer);
String publik getFromEmail();
public void setFromEmail(String dariEmail);
String publik getPassword();
public void setPassword(String kata sandi);
String publik getSmtpHost();
kekosongan publik setSmtpHost(String smtpHost);
String publik getUserId() ;
kekosongan publik setUserId(String userId);
Artikel ini berasal dari blog CSDN. Harap sebutkan sumbernya saat mencetak ulang: http://blog.csdn.net/loshu2003/archive/2009/12/31/5111344.aspx
-