JavaRush /Java Blog /Random-ID /Pertanyaan Wawancara Hibernasi
Dr-JohnZoidberg
Level 41
Киев

Pertanyaan Wawancara Hibernasi

Dipublikasikan di grup Random-ID
Artikel ini merupakan terjemahan dan penyempurnaan artikel luar negeri (daftar sumber tercantum di akhir artikel). Jawaban atas beberapa pertanyaan diperluas, disediakan tautan ke sumber pihak ketiga yang berisi jawaban yang mungkin muncul selama proses membaca. 1) Apa itu Hibernasi? Ini adalah kerangka kerja untuk pemetaan objek-relasional entitas ke dalam database relasional tradisional. Fitur utama dari kerangka kerja ini: 1) Pembuatan dan pembaruan tabel secara otomatis dalam database; 2) Karena kueri utama ke database (menyimpan, memperbarui, menghapus, dan mencari) disajikan sebagai metode kerangka kerja, kode yang ditulis pengembang berkurang secara signifikan; 3) Menyediakan penggunaan bahasa mirip SQL (HQL - bahasa kueri hibernasi). Kueri HQL dapat ditulis bersama objek data (kelas POJO yang disiapkan untuk bekerja dengan database). 2) Cara Hibernasimembantu dengan pemrograman? Hibernate mengimplementasikan sejumlah fitur yang sangat menyederhanakan pekerjaan pengembang. — Salah satu fiturnya adalah hibernasi memungkinkan pengembang menghindari penulisan sebagian besar kueri SQL (sudah diterapkan, Anda hanya perlu menggunakan metode yang disediakan kerangka kerja). — Di balik terpalnya, Hibernate memiliki banyak alat berguna yang mempercepat aplikasi secara signifikan, yang paling menonjol adalah caching dua tingkat dan menyempurnakan penarikan yang lambat dan pengambilan. — Menghasilkan tabel ke dalam database itu sendiri. 3) Metode untuk mengonfigurasi pekerjaan dengan Hibernate. Ada empat cara untuk mengonfigurasi pekerjaan dengan Hibernate: - menggunakan anotasi; - hibernasi.cfg.xml; - hibernasi.properti; - ketekunan.xml. Metode konfigurasi yang paling umum: melalui anotasi dan file persistence.xml, sedangkan untuk file hibernate.properties dan hibernate.cfg.xml, maka hibernate.cfg.xml lebih penting (jika aplikasi memiliki kedua file, maka pengaturan dari file hibernate.cfg diterima.xml). Konfigurasi dengan anotasi, meskipun mudah, tidak selalu memungkinkan; misalnya, jika Anda ingin memiliki konfigurasi entitas yang berbeda untuk database yang berbeda atau untuk situasi yang berbeda, maka Anda harus menggunakan file konfigurasi xml. 4) Antarmuka utama apa yang digunakan Hibernate? Ada lima antarmuka utama yang digunakan dalam setiap aplikasi yang berhubungan dengan Hibernate: - Antarmuka sesi; - Antarmuka SessionFactory; — Antarmuka konfigurasi; — Antarmuka transaksi; — Antarmuka Kueri dan Kriteria. 5) Apa peran antarmuka Sesi di Hibernate? Sesi adalah antarmuka utama yang bertanggung jawab untuk berkomunikasi dengan database. Ini juga membantu membuat objek permintaan untuk mendapatkan objek persisten. (objek persisten - objek yang sudah ada di database; objek permintaan - objek yang diperoleh saat kita menerima hasil kueri di database, dengan inilah aplikasi bekerja). Objek Session dapat diperoleh dari SessionFactory: Session session = sessionFactory.openSession(); Peran antarmuka Sesi: adalah pembungkus koneksi jdbc ke database; (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - adalah pabrik untuk transaksi (menurut dokumentasi resmi transaksi - memungkinkan aplikasi untuk menentukan unit kerja, yang pada dasarnya berarti bahwa transaksi mendefinisikan batas-batas operasi yang terkait dengan database). — adalah penjaga cache tingkat pertama yang wajib. 6) Apa peran antarmuka SessionFactory di Hibernate? Dari objek SessionFactory kita memperoleh objek bertipe Session. Hanya ada satu SessionFactory untuk keseluruhan aplikasi dan diinisialisasi saat aplikasi dimulai. SessionFactory menyimpan cache metadata dan kueri SQL yang sering digunakan oleh aplikasi selama operasi. Itu juga menyimpan informasi yang diterima dalam salah satu transaksi dan dapat digunakan dalam transaksi lain. Objek SessionFactory dapat diperoleh dengan menggunakan panggilan berikut: SessionFactory sessionFactory = konfigurasi.buildSessionFactory(); 7) Jenis koleksi apa saja yang disediakan di Hibernate? Tas, Set, Daftar, Peta, Array. 8) Apa yang dimaksud dengan koleksi jenis Tas dan mengapa digunakan? Dalam implementasinya, tipe koleksi Bag sangat mirip dengan Set, yang membedakan adalah Bag dapat menyimpan nilai duplikat. Bag menyimpan daftar elemen yang tidak diindeks. Sebagian besar tabel dalam database memiliki indeks yang menampilkan posisi elemen data relatif terhadap satu sama lain; indeks ini direpresentasikan dalam tabel sebagai kolom terpisah. Dengan pemetaan relasional objek, nilai kolom indeks dipetakan ke indeks di Array, indeks di Daftar, atau kunci di Peta. Jika Anda ingin mendapatkan kumpulan objek yang tidak berisi data indeks, maka Anda dapat menggunakan koleksi bertipe Bag atau Set (koleksi berisi data dalam bentuk yang tidak diurutkan, tetapi dapat diurutkan sesuai permintaan). 9) Apa perbedaan pengoperasian metode load();? dan dapatkan();? memuat() metode; biasanya digunakan ketika Anda tidak yakin bahwa objek yang diminta sudah ada di database. Jika objek tidak ditemukan, maka metode mengeluarkan pengecualian. Jika objek ditemukan, metode mengembalikan objek proxy, yang merupakan tautan ke objek yang terletak di database (permintaan database belum dibuat, semacam dari pengambilan lambat), permintaan langsung ke database saat kita mengakses objek yang diperlukan secara langsung melalui objek proxy. dapatkan() metode; digunakan kemudian, Anda tidak 100 persen yakin apakah objek yang diminta ada dalam database. Dalam kasus mengakses objek yang tidak ada, metode get(); akan mengembalikan nol. Jika objek ditemukan, metode get(); akan mengembalikan objek itu sendiri dan permintaan database akan segera dibuat. 10) Apa yang dimaksud dengan pengambilan Lazy di Hibernate? Tipe checkout Malas di Hibernate dikaitkan dengan entitas daun (anak) dan menentukan kebijakan checkout bersama jika ada permintaan untuk memeriksa entitas induk. Contoh sederhana: Ada sebuah entitas Rumah. Ia menyimpan informasi tentang nomor, jalan, jumlah apartemen dan informasi tentang keluarga yang tinggal di apartemen; keluarga-keluarga ini membentuk entitas anak relatif terhadap entitas Rumah. Saat kami meminta informasi tentang sebuah Rumah, kami mungkin sama sekali tidak perlu mengetahui informasi tentang keluarga yang tinggal di dalamnya, di sini pengambilan yang lambat membantu kami, yang memungkinkan kami mengonfigurasi entitas Rumah sehingga informasi tentang keluarga hanya disediakan berdasarkan permintaan, ini secara signifikan mengaburkan permintaan dan mempercepat aplikasi. ©dev-bay Sebagian besar tabel dalam database memiliki indeks yang menampilkan posisi elemen data relatif terhadap satu sama lain; indeks ini direpresentasikan dalam tabel sebagai kolom terpisah. Dengan pemetaan relasional objek, nilai kolom indeks dipetakan ke indeks di Array, indeks di Daftar, atau kunci di Peta. Jika Anda ingin mendapatkan kumpulan objek yang tidak berisi data indeks, maka Anda dapat menggunakan koleksi bertipe Bag atau Set (koleksi berisi data dalam bentuk yang tidak diurutkan, tetapi dapat diurutkan sesuai permintaan). 9) Apa perbedaan pengoperasian metode load();? dan dapatkan();? memuat() metode; biasanya digunakan ketika Anda tidak yakin bahwa objek yang diminta sudah ada di database. Jika objek tidak ditemukan, maka metode mengeluarkan pengecualian. Jika objek ditemukan, metode mengembalikan objek proxy, yang merupakan tautan ke objek yang terletak di database (permintaan database belum dibuat, semacam dari pengambilan lambat), permintaan langsung ke database saat kita mengakses objek yang diperlukan secara langsung melalui objek proxy. dapatkan() metode; digunakan kemudian, Anda tidak 100 persen yakin apakah objek yang diminta ada dalam database. Dalam kasus mengakses objek yang tidak ada, metode get(); akan mengembalikan nol. Jika objek ditemukan, metode get(); akan mengembalikan objek itu sendiri dan permintaan database akan segera dibuat. 10) Apa yang dimaksud dengan pengambilan Lazy di Hibernate? Tipe checkout Malas di Hibernate dikaitkan dengan entitas daun (anak) dan menentukan kebijakan checkout bersama jika ada permintaan untuk memeriksa entitas induk. Contoh sederhana: Ada sebuah entitas Rumah. Ia menyimpan informasi tentang nomor, jalan, jumlah apartemen dan informasi tentang keluarga yang tinggal di apartemen; keluarga-keluarga ini membentuk entitas anak relatif terhadap entitas Rumah. Saat kami meminta informasi tentang sebuah Rumah, kami mungkin sama sekali tidak perlu mengetahui informasi tentang keluarga yang tinggal di dalamnya, di sini pengambilan yang lambat membantu kami, yang memungkinkan kami mengonfigurasi entitas Rumah sehingga informasi tentang keluarga hanya disediakan berdasarkan permintaan, ini secara signifikan mengaburkan permintaan dan mempercepat aplikasi. ©dev-bay Sebagian besar tabel dalam database memiliki indeks yang menampilkan posisi elemen data relatif terhadap satu sama lain; indeks ini direpresentasikan dalam tabel sebagai kolom terpisah. Dengan pemetaan relasional objek, nilai kolom indeks dipetakan ke indeks di Array, indeks di Daftar, atau kunci di Peta. Jika Anda ingin mendapatkan kumpulan objek yang tidak berisi data indeks, maka Anda dapat menggunakan koleksi bertipe Bag atau Set (koleksi berisi data dalam bentuk yang tidak diurutkan, tetapi dapat diurutkan sesuai permintaan). 9) Apa perbedaan pengoperasian metode load();? dan dapatkan();? memuat() metode; biasanya digunakan ketika Anda tidak yakin bahwa objek yang diminta sudah ada di database. Jika objek tidak ditemukan, maka metode mengeluarkan pengecualian. Jika objek ditemukan, metode mengembalikan objek proxy, yang merupakan tautan ke objek yang terletak di database (permintaan database belum dibuat, semacam dari pengambilan lambat), permintaan langsung ke database saat kita mengakses objek yang diperlukan secara langsung melalui objek proxy. dapatkan() metode; digunakan kemudian, Anda tidak 100 persen yakin apakah objek yang diminta ada dalam database. Dalam kasus mengakses objek yang tidak ada, metode get(); akan mengembalikan nol. Jika objek ditemukan, metode get(); akan mengembalikan objek itu sendiri dan permintaan database akan segera dibuat. 10) Apa yang dimaksud dengan pengambilan Lazy di Hibernate? Tipe checkout Malas di Hibernate dikaitkan dengan entitas daun (anak) dan menentukan kebijakan checkout bersama jika ada permintaan untuk memeriksa entitas induk. Contoh sederhana: Ada sebuah entitas Rumah. Ia menyimpan informasi tentang nomor, jalan, jumlah apartemen dan informasi tentang keluarga yang tinggal di apartemen; keluarga-keluarga ini membentuk entitas anak relatif terhadap entitas Rumah. Saat kami meminta informasi tentang sebuah Rumah, kami mungkin sama sekali tidak perlu mengetahui informasi tentang keluarga yang tinggal di dalamnya, di sini pengambilan yang lambat membantu kami, yang memungkinkan kami mengonfigurasi entitas Rumah sehingga informasi tentang keluarga hanya disediakan berdasarkan permintaan, ini secara signifikan mengaburkan permintaan dan mempercepat aplikasi. ©dev-bay mengarahkan query ke database ketika kita langsung mengakses objek yang diperlukan melalui objek proxy. dapatkan() metode; digunakan kemudian, Anda tidak 100 persen yakin apakah objek yang diminta ada dalam database. Dalam kasus mengakses objek yang tidak ada, metode get(); akan mengembalikan nol. Jika objek ditemukan, metode get(); akan mengembalikan objek itu sendiri dan permintaan database akan segera dibuat. 10) Apa yang dimaksud dengan pengambilan Lazy di Hibernate? Tipe checkout Malas di Hibernate dikaitkan dengan entitas daun (anak) dan menentukan kebijakan checkout bersama jika ada permintaan untuk memeriksa entitas induk. Contoh sederhana: Ada sebuah entitas Rumah. Ia menyimpan informasi tentang nomor, jalan, jumlah apartemen dan informasi tentang keluarga yang tinggal di apartemen; keluarga-keluarga ini membentuk entitas anak relatif terhadap entitas Rumah. Saat kami meminta informasi tentang sebuah Rumah, kami mungkin sama sekali tidak perlu mengetahui informasi tentang keluarga yang tinggal di dalamnya, di sini pengambilan yang lambat membantu kami, yang memungkinkan kami mengonfigurasi entitas Rumah sehingga informasi tentang keluarga hanya disediakan berdasarkan permintaan, ini secara signifikan mengaburkan permintaan dan mempercepat aplikasi. ©dev-bay mengarahkan query ke database ketika kita langsung mengakses objek yang diperlukan melalui objek proxy. dapatkan() metode; digunakan kemudian, Anda tidak 100 persen yakin apakah objek yang diminta ada dalam database. Dalam kasus mengakses objek yang tidak ada, metode get(); akan mengembalikan nol. Jika objek ditemukan, metode get(); akan mengembalikan objek itu sendiri dan permintaan database akan segera dibuat. 10) Apa yang dimaksud dengan pengambilan Lazy di Hibernate? Tipe checkout Malas di Hibernate dikaitkan dengan entitas daun (anak) dan menentukan kebijakan checkout bersama jika ada permintaan untuk memeriksa entitas induk. Contoh sederhana: Ada sebuah entitas Rumah. Ia menyimpan informasi tentang nomor, jalan, jumlah apartemen dan informasi tentang keluarga yang tinggal di apartemen; keluarga-keluarga ini membentuk entitas anak relatif terhadap entitas Rumah. Saat kami meminta informasi tentang sebuah Rumah, kami mungkin sama sekali tidak perlu mengetahui informasi tentang keluarga yang tinggal di dalamnya, di sini pengambilan yang lambat membantu kami, yang memungkinkan kami mengonfigurasi entitas Rumah sehingga informasi tentang keluarga hanya disediakan berdasarkan permintaan, ini secara signifikan mengaburkan permintaan dan mempercepat aplikasi. ©dev-bay
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION