Artikel ini menceritakan pertanyaan tes tertulis wawancara klasik dan jawaban referensi mereka. Bagikan untuk referensi Anda, sebagai berikut:
1. Bagaimana cara kerja hibernasi dan mengapa itu harus digunakan?
prinsip:
1. File Konfigurasi Baca dan Parse
2. Baca dan purposikan informasi pemetaan dan buat sessionFactory
3. Sesi Terbuka
4. Buat transasi transaksi
5. Operasi Kegigihan
6. Kirim transaksi
7. Tutup sesi
8. Tutup sestionFactory
Mengapa menggunakan:
①. Kode untuk database yang mengakses JDBC telah dienkapsulasi, sangat menyederhanakan kode berulang yang rumit di lapisan akses data.
②. Hibernate adalah kerangka kerja kegigihan utama berdasarkan JDBC dan merupakan implementasi ORM yang sangat baik. Itu sangat menyederhanakan karya pengkodean lapisan DAO sampai batas tertentu
③. Hibernate menggunakan mekanisme refleksi Java, bukan program peningkatan bytecode untuk mencapai transparansi.
④. Hibernate berkinerja sangat baik karena merupakan kerangka kerja yang ringan. Fleksibilitas pemetaan sangat baik. Ini mendukung berbagai database relasional, dari satu ke satu hingga banyak hubungan yang kompleks.
2. Bagaimana hibernasi penundaan pemuatan?
①. Hibernate2 Delay Loading Implementasi: a) Objek entitas b) Koleksi (Koleksi)
②. Hibernate3 menyediakan fungsi pemuatan atribut yang tertunda. Saat hibernasi data kueri, data tidak ada dan memori. Ketika program benar -benar beroperasi pada data, objek ada dan memori, yang mewujudkan pemuatan yang tertunda. Ini menyimpan overhead memori server dan dengan demikian meningkatkan kinerja server.
3. Bagaimana cara mengimplementasikan hubungan antara kelas -kelas di Hibernate? (seperti satu-ke-banyak, hubungan banyak-ke-banyak)
Hubungan antar kelas terutama tercermin dalam hubungan antara tabel. Mereka beroperasi pada benda -benda di kota. Program kami memetakan semua tabel dan kelas bersama-sama, dan mereka dilewatkan melalui banyak-ke-satu, satu-ke-banyak, banyak-ke-banyak, dan banyak-ke-banyak dalam file konfigurasi.
4. Mari kita bicara tentang mekanisme cache Hibernate
①. Cache internal juga disebut cache tingkat pertama di Hibernate, yang termasuk dalam cache tingkat aplikasi
②. Cache Level 2:
a) Aplikasi dan cache
b) Kondisi cache terdistribusi: Data tidak akan dimodifikasi oleh pihak ketiga, ukuran data berada dalam kisaran yang dapat diterima, frekuensi pembaruan data rendah, data yang sama sering digunakan oleh sistem, dan data non-kritis
c) Implementasi cache pihak ketiga
5. Metode Permintaan Hibernate
SQL, Kriteria, Komptisi Objek
HQL:
1. Kueri atribut
2. Kueri Parameter, Nameter Parameter Query
3. Kueri Terkait
4. Kueri Pagination
5. Fungsi statistik
6. Bagaimana cara mengoptimalkan hibernasi?
①. Gunakan asosiasi satu-ke-banyak dua-besar, bukan satu-ke-banyak-banyak ②. Gunakan asosiasi satu-ke-banyak satu-ke-banyak ③. Jangan gunakan satu-ke-satu, gunakan banyak-ke-satu sebagai gantinya ④. Konfigurasikan cache objek, tidak gunakan set cache ⑤. Gunakan tas untuk koleksi satu-ke-banyak, dan gunakan set untuk banyak koleksi.
⑥. Gunakan polimorfisme eksplisit di kelas warisan⑦. Seharusnya ada lebih sedikit bidang meja, dan jangan takut banyak asosiasi meja. Ada cache sekunder untuk mendukung Anda.
7. Mekanisme kerja struts? Mengapa menggunakan struts?
Mekanisme kerja:
Alur kerja Struts:
Inisialisasi ActionServlet akan dimuat saat aplikasi web dimulai. ActionServlet akan dimuat dari
Baca informasi konfigurasi dari file struts-config.xml dan simpan di berbagai objek konfigurasi
Ketika ActionServlet menerima permintaan klien, proses berikut akan dieksekusi.
-(1) Ambil instance ActionMapping yang cocok dengan permintaan pengguna. Jika tidak ada, ia mengembalikan informasi permintaan yang tidak valid;
-(2) Jika instance ActionForm tidak ada, buat objek ActionForm dan simpan data formulir yang dikirimkan oleh klien ke objek ActionForm;
-(3) Putuskan apakah verifikasi formulir diperlukan berdasarkan informasi konfigurasi. Jika verifikasi diperlukan, metode Call ActionForm's Validate ();
-(4) Jika metode validasi () ActionForm mengembalikan nol atau mengembalikan objek Actuiberrors yang tidak mengandung ActionMessage, itu berarti bahwa verifikasi bentuk berhasil;
-(5) ActionServlet memutuskan tindakan mana yang akan meneruskan permintaan berdasarkan informasi pemetaan yang terkandung dalam ActionMapping. Jika instance tindakan yang sesuai tidak ada, buat instance ini terlebih dahulu dan kemudian hubungi metode tindakan eksekusi ();
-(6) Metode Execute () Action Mengembalikan objek ActionForward, dan ActionServlet meneruskan permintaan klien ke komponen JSP yang ditunjukkan oleh objek ActionForward;
-(7) Objek ActionForward menunjuk ke komponen JSP untuk menghasilkan halaman web dinamis dan mengembalikannya ke klien;
Mengapa menggunakan:
Munculnya teknologi JSP, Servlet, dan Javabean memberi kita kemungkinan membangun sistem aplikasi perusahaan yang kuat. Tetapi sistem yang dibangun dengan teknologi ini sangat kacau, jadi di atas ini, kita membutuhkan aturan dan aturan untuk mengatur teknologi ini. Ini adalah kerangka kerja, dan struts muncul.
Aplikasi yang dikembangkan berdasarkan struts terdiri dari tiga jenis komponen: komponen pengontrol, komponen model, dan komponen tampilan
8. Bagaimana Kerangka Validasi Struts divalidasi?
Konfigurasikan prompt kesalahan spesifik dalam file konfigurasi struts, dan kemudian hubungi metode validate () di formbean.
9. Mari Bicara Tentang Pola Desain Struts
Mode MVC: ActionServler dimuat dan diinisialisasi ketika aplikasi web dimulai. Ketika pengguna mengirimkan formulir, objek ActionForm yang dikonfigurasi dibuat dan diisi dalam data formulir yang sesuai. ActionServler memutuskan apakah verifikasi formulir diperlukan berdasarkan pengaturan yang dikonfigurasi oleh file struts-config.xml. Jika perlu, verifikasi validasi ActionForm () dan pilih tindakan mana yang akan mengirim permintaan. Jika tindakan tidak ada, ActionServlet akan membuat objek ini terlebih dahulu dan kemudian memanggil metode Execute () Tindakan. Execute () memperoleh data dari objek ActionForm, melengkapi logika bisnis, dan mengembalikan objek ActionForward. ActionServlet meneruskan permintaan klien ke komponen JSP yang ditentukan oleh objek ActionForward. JSP yang ditentukan oleh objek ActionForward menghasilkan halaman web yang dinamis dan mengembalikannya ke klien.
10. Mekanisme kerja musim semi dan mengapa?
①.spring MVC Harap kirimkan semua permintaan ke DispatcherServlet, yang akan mempercayakan modul lain dari sistem aplikasi untuk bertanggung jawab atas pemrosesan permintaan yang sebenarnya.
②.DispatcherServlet meminta satu atau lebih Handlermappings dan menemukan pengontrol yang menangani permintaan.
③.DispatcherServlet Harap kirimkan permintaan ke pengontrol target
④. Setelah pengontrol melakukan pemrosesan logika bisnis, ia akan mengembalikan ModelandView.
⑤.Dispathcher Querys satu atau lebih viewResolver tampilan resolvers dan menemukan objek tampilan yang ditentukan oleh objek ModelAndView ⑥. Objek tampilan bertanggung jawab untuk merender dan mengembalikannya ke klien.
Mengapa menggunakan:
{AOP memungkinkan pengembang untuk membuat masalah non-perilaku, yang disebut masalah lintas sekelompok, dan memasukkannya ke dalam kode aplikasi. Setelah menggunakan AOP, layanan publik (seperti log, kegigihan, transaksi, dll.) Dapat dipecah menjadi aspek dan diterapkan pada objek domain tanpa meningkatkan kompleksitas model objek objek domain.
IOC memungkinkan pembuatan lingkungan aplikasi di mana objek dapat dibangun dan kemudian meneruskan objek kolaboratif mereka ke objek tersebut. Seperti yang ditunjukkan oleh kata inversi, IOC seperti jndi terbalik. Tanpa menggunakan sekelompok pabrik abstrak, pelacak layanan, singleton, dan konstruksi lurus, masing -masing objek dibangun dengan objek kolaboratifnya. Oleh karena itu, kolaborator dikelola oleh wadah.
Spring adalah wadah IOC bahkan jika itu adalah kerangka kerja AOP. Hal terbaik tentang musim semi adalah membantu Anda mengganti objek. Dengan Spring, cukup tambahkan dependensi (objek kolaborasi) menggunakan properti Javabean dan file konfigurasi. Objek kolaborasi dengan antarmuka yang serupa kemudian dapat dengan mudah diganti saat dibutuhkan. }
Spring Framework adalah arsitektur hierarkis yang terdiri dari 7 modul yang terdefinisi dengan baik. Modul pegas dibangun di atas wadah inti yang menentukan bagaimana kacang dibuat, dikonfigurasi, dan dikelola.
Setiap modul (atau komponen) yang membentuk kerangka pegas dapat ada sendiri atau diimplementasikan bersama dengan satu atau lebih modul lainnya. Fungsi setiap modul adalah sebagai berikut:
Container Core Container: Core Container menyediakan fungsi dasar kerangka kerja Spring. Komponen utama dari wadah inti adalah beanfactory, yang merupakan implementasi dari pola pabrik. BeanFactory menggunakan mode inversi kontrol (IOC) untuk memisahkan spesifikasi konfigurasi dan ketergantungan aplikasi dari kode aplikasi yang sebenarnya.
☆ Konteks Musim Semi: Konteks Spring adalah file konfigurasi yang menyediakan informasi konteks ke kerangka kerja Spring. Konteks musim semi mencakup layanan perusahaan seperti JNDI, EJB, email, internasionalisasi, kemampuan penjadwalan checksum.
☆ Spring AOP: Melalui fitur manajemen konfigurasi, modul AOP pegas secara langsung mengintegrasikan fungsi pemrograman yang berorientasi aspek ke dalam kerangka kerja Spring. Oleh karena itu, mudah untuk membuat objek apa pun dikelola oleh Spring Framework Dukungan AOP. Modul AOP Spring menyediakan layanan manajemen transaksi untuk objek dalam aplikasi berbasis musim semi. Dengan menggunakan Spring AOP, manajemen transaksi deklaratif dapat diintegrasikan ke dalam aplikasi tanpa mengandalkan komponen EJB.
☆ Spring DAO: Lapisan abstraksi JDBC DAO menyediakan hierarki pengecualian yang bermakna yang dapat digunakan untuk mengelola penanganan pengecualian dan pesan kesalahan yang dilemparkan oleh vendor basis data yang berbeda. Hirarki pengecualian menyederhanakan penanganan kesalahan dan sangat mengurangi jumlah kode pengecualian yang perlu ditulis (seperti koneksi pembukaan dan penutupan). Pengecualian yang berorientasi pada JDBC Spring Dao mengikuti hierarki pengecualian DAO umum.
☆ Spring ORM: Kerangka kerja Spring menyisipkan beberapa kerangka kerja ORM, sehingga menyediakan alat hubungan objek ORM, termasuk JDO, Hibernate, dan Ibatis SQL Map. Semua ini mengikuti transaksi umum Spring dan hierarki pengecualian DAO.
☆ Modul Web Spring: Modul konteks web dibangun pada modul konteks aplikasi dan menyediakan konteks untuk aplikasi berbasis web. Oleh karena itu, kerangka kerja musim semi mendukung integrasi dengan Jakarta Struts. Modul Web juga menyederhanakan pekerjaan penanganan permintaan multi-bagian dan parameter permintaan yang mengikat ke objek domain.
☆ Kerangka MVC Spring: Kerangka kerja MVC adalah implementasi MVC yang berfungsi penuh untuk membangun aplikasi web. Melalui antarmuka kebijakan, kerangka kerja MVC menjadi sangat dapat dikonfigurasi, dan MVC menampung sejumlah besar teknologi tampilan, termasuk JSP, kecepatan, ubin, ITEXT, dan POI.
Kemampuan Spring Framework dapat digunakan di server J2EE mana pun, dan kebanyakan dari mereka cocok untuk lingkungan yang tidak dikelola. Titik inti musim semi adalah: dukungan untuk objek akses bisnis dan data yang dapat digunakan kembali 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 mandiri, lingkungan pengujian.
IOC dan AOP
Konsep dasar pengendalian pola inversi (juga dikenal sebagai intervensi ketergantungan) adalah untuk tidak membuat objek, tetapi menggambarkan bagaimana mereka dibuat. Itu tidak secara langsung terhubung ke objek dan layanan dalam kode, tetapi menjelaskan komponen mana yang membutuhkan layanan mana dalam file konfigurasi. Wadah (wadah IOC dalam kerangka musim semi) bertanggung jawab untuk menghubungkan ini bersama -sama.
Dalam skenario IOC yang khas, wadah membuat semua objek dan menetapkan properti yang diperlukan untuk menghubungkannya bersama, memutuskan kapan metode dipanggil. Tabel berikut mencantumkan pola implementasi IOC.
Wadah IOC Spring Framework diimplementasikan menggunakan Tipe 2 dan Tipe 3.
Pemrograman yang berorientasi pada aspek
Pemrograman yang berorientasi pada aspek, AOP, adalah teknik pemrograman yang memungkinkan pemrogram untuk memodulasi perilaku yang melintasi keprihatinan atau melintasi garis-garis pembagian yang khas dari tanggung jawab (seperti penebangan dan manajemen transaksi). Konstruksi inti AOP adalah aspek, yang merangkum perilaku yang mempengaruhi beberapa kelas menjadi modul yang dapat digunakan kembali.
AOP dan IOC adalah teknologi pelengkap, yang keduanya menggunakan pendekatan modular untuk memecahkan masalah kompleks dalam pengembangan aplikasi perusahaan. Dalam pengembangan berorientasi objek yang khas, pernyataan logging mungkin diperlukan untuk ditempatkan di semua metode dan kelas Java untuk menerapkan fungsionalitas logging. Dalam pendekatan AOP, layanan log dapat dimodulasi pada gilirannya dan diterapkan secara deklaratif untuk komponen yang membutuhkan log. Tentu saja, keuntungannya adalah bahwa kelas Java tidak perlu mengetahui keberadaan layanan log, juga tidak perlu mempertimbangkan kode yang relevan. Oleh karena itu, kode aplikasi yang ditulis dalam AOP Spring secara longgar digabungkan.
Fungsi AOP sepenuhnya terintegrasi ke dalam konteks manajemen transaksi pegas, penebangan dan berbagai fitur lainnya.
Wadah IOC
Di jantung desain Spring adalah paket org.springframework.beans, yang dirancang untuk digunakan dengan komponen Javabean. Paket ini biasanya tidak digunakan secara langsung oleh pengguna, tetapi oleh server menggunakannya sebagai perantara yang mendasarinya untuk sebagian besar fungsi lainnya. Abstraksi paling canggih berikutnya adalah antarmuka beanfactory, yang merupakan implementasi dari pola desain pabrik yang memungkinkan objek dibuat dan diambil dengan nama. BeanFactory juga dapat mengelola hubungan antar objek.
BeanFactory mendukung dua model objek.
□ Model Singleton memberikan contoh objek bersama dengan nama -nama spesifik yang dapat diambil saat meminta. Singleton adalah model objek default dan paling umum digunakan. Ideal untuk objek layanan tanpa kewarganegaraan.
□ Model prototipe memastikan bahwa objek terpisah dibuat setiap kali mereka diambil. Prototipe paling cocok ketika setiap pengguna membutuhkan objek mereka sendiri.
Konsep pabrik kacang adalah dasar musim semi sebagai wadah IOC. IOC menggeser tanggung jawab untuk menangani hal -hal dari kode aplikasi ke kerangka kerja. Seperti yang akan saya tunjukkan dalam contoh berikutnya, kerangka kerja Spring menggunakan properti Javabean dan data konfigurasi untuk menunjukkan ketergantungan yang harus diatur.
Antarmuka beanfactory
Karena org.springframework.beans.factory.beanFactory adalah antarmuka sederhana, itu dapat diimplementasikan untuk berbagai metode penyimpanan yang mendasarinya. Definisi beanfactory yang paling umum digunakan adalah XMLBeanFactory, yang memuat kacang sesuai dengan definisi dalam file XML, seperti yang ditunjukkan dalam Listing 1.
Daftar 1. XmlbeanFactory
BeanFactory factory = new XMLBeanFactory (FileInputSteam baru ("mybean.xml"));Kacang yang didefinisikan dalam file XML dimuat secara negatif, yang berarti bahwa kacang itu sendiri tidak akan diinisialisasi sampai diperlukan. Untuk mengambil kacang dari beanfactory, panggil saja metode getbean () dan lulus atas nama kacang yang akan diambil, seperti yang ditunjukkan dalam Listing 2.
Listing 2. GetBean ()
Mybean mybean = (mybean) factory.getbean ("mybean");Definisi masing -masing kacang dapat berupa pojo (didefinisikan dengan nama kelas dan properti inisialisasi Javabean) atau pabrik. Antarmuka pabrik menambahkan tingkat tidak langsung ke aplikasi yang dibangun menggunakan kerangka kerja Spring.
Contoh IOC
Cara termudah untuk memahami inversi kontrol adalah dengan melihat aplikasi praktisnya. Dalam meringkas bagian 1 dari seri musim semi tiga bagian, saya menggunakan contoh yang menunjukkan cara menyuntikkan ketergantungan aplikasi melalui wadah IOC musim semi (daripada membangunnya di).
Saya menggunakan kasus penggunaan untuk membuka akun kredit online sebagai titik awal. Untuk implementasi ini, memungkinkan akun kredit mengharuskan pengguna untuk berinteraksi dengan layanan berikut:
☆ Layanan Penilaian Tingkat Kredit, Informasi Riwayat Kredit Pengguna Kueri.
☆ Layanan Tautan Informasi Jarak Jauh, masukkan informasi pelanggan, hubungkan informasi pelanggan dengan kartu kredit dan informasi bank untuk debit otomatis (jika diperlukan).
☆ Layanan email, mengirim email kepada pengguna tentang status kartu kredit.
Tiga antarmuka
Untuk contoh ini, saya berasumsi bahwa layanan sudah ada, dan idealnya untuk mengintegrasikannya bersama dengan cara yang digabungkan secara longgar. Daftar berikut menunjukkan antarmuka program aplikasi untuk tiga layanan.
Listing 3. CreditratingInterface
Public Interface CreditationInterface {public boolean getUserCredithistoryInformation (icustomer icustomer);}Antarmuka penilaian tingkat kredit yang ditunjukkan dalam Listing 3 memberikan informasi riwayat kredit. Itu membutuhkan objek pelanggan yang berisi informasi pelanggan. Implementasi antarmuka ini disediakan oleh kelas kredit.
Listing 4. CreditlinkingInterface
Public Interface CreditLinkingInterFace {public String getUrl (); public void setUrl (string url); public void linkCrEditBankAccount () melempar pengecualian;}Antarmuka tautan kredit menghubungkan informasi riwayat kredit dengan informasi bank (jika diperlukan) dan memasukkan informasi kartu kredit pengguna. Antarmuka tautan kredit adalah layanan jarak jauh, dan kueri dilakukan melalui metode getUrl (). URL diatur oleh mekanisme konfigurasi kacang Spring Framework, yang akan saya bahas nanti. Implementasi antarmuka ini disediakan oleh kelas pengikat kredit.
Listing 5. EmailInterface
public interface EmailInterface {public void sendEmail(ICustomer iCustomer);public String getFromEmail();public void setFromEmail(String fromEmail);public String getPassword();public void setPassword(String password);public String getSmtpHost();public void setSmtpHost(String smtpHost);public String getUserId();public void setUserId(String userid);Saya harap artikel ini akan membantu pemrograman Java semua orang.