Hibernasi perbedaan antara koneksi mendesak dan koneksi biasa
Pendahuluan dan penjelasan yang relevan telah dikomentari dalam kode, sehingga Anda dapat merujuknya.
Paket com.baidu.test; impor java.util.arraylist; impor java.util.linkedhashset; impor java.util.list; impor org.hibernate.query; impor org.hibernate. org.hibernate.service.serviceregistry; impor org.hibernate.service.serviceregistryBuilder; impor org.junit.after; Impor org.junit.Before; impor org.junit.test; impor com.baidu.leftjoin.department; com. Testhql_leftjoin {private sessionfactory sessionFactory; sesi sidang pribadi; transaksi transaksi pribadi; @Before public void init () {configuration configuration = new configuration (). Configure (); serviceregistry (configuration. configuration.buildsessionFactory (serviceeregistry); session = sessionfactory.opensession (); transaction = session.begintransaction ();}@setelah public void dashare () {transaction.commit (); session.close (); sessionfactory.close ();} // // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The following example is from 1 To Banyak ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ **** Ereksi Left Lefter Join: Fitur adalah: Jika tabel kiri tidak memenuhi persyaratan, meja kiri tidak memenuhi persyaratan* 1. * 2. Metode daftar () menyimpan referensi ke objek entitas dalam set yang dikembalikan. Koleksi karyawan yang terkait dengan setiap objek departemen diinisialisasi, * menyimpan semua objek entitas terkait. * 3. Hasil kueri mungkin berisi elemen duplikat, dan elemen duplikat dapat difilter melalui hashset * * deduplikasi: * Metode 1: Gunakan string * string hql = "Pilih D dari departemen D dari Departemen D GABUNG FETCH D.EMPS"; * Kueri kueri = session.createquery (hql); * * Daftar <department> kedalaman = query.list (); * System.out.println (depts.size ()); * * Metode 2 * String hql = "Dari departemen D kiri gabung fetch d.emps"; * Kueri kueri = session.createquery (hql); * * Daftar <department> depts = query.list (); * * Depts = ArrayList baru <> (LinkedHashSet baru (Depts)); * System.out.println (depts.size ()); * * untuk (departemen departemen: depts) { * system.out.println (dept.getName () + "-" + dept.getemps (). size ()); *} * * */@Uji public void testleftjOinseFetch () {// string hql = "Pilih Dighing d dari departemen D Left goint fetch d.emps"; // query kueri = session.createQuery (hql); // list <departemen> depts = query.list (); // System.out.println (Departemen> Depts = query.list (); // System.out.printlln (Departemen> Depts = query.list (); // System.out.printlln (Departemen> Depts = query.list (); // System.out.printlln (Departemen> Depts = query.list ();//System.out.println Fetch d.emps "; kueri kueri = session.createqueery (hql); daftar <department> depts = query.list (); System.out.println (depts.size ()); depts = new arraylist <> (LinkedHashset (depts)); System.out.println (depts.S.SePT () (depts)); System.out.println (Depts.ssize (); Dept: Depts) {System.out.println (dept.getName () + "-" + dept.getemps (). size ());}}/** * gabungan luar kiri: * 1. Kata kunci gabungan kiri mewakili kueri bergabung luar kiri. * 2. Jenis array objek disimpan dalam koleksi yang dikembalikan oleh metode daftar () * 3. Tentukan strategi pencarian koleksi karyawan berdasarkan file konfigurasi. * 4. Jika Anda ingin koleksi dikembalikan dengan metode daftar () untuk hanya berisi objek departemen, * Anda dapat menggunakan kata kunci pilih dalam pernyataan kueri HQL * * Hasil kueri pernyataan tersebut digandakan: * string hql = "dari departemen D left goint d.emps"; * Kueri kueri = session.createquery (hql); * * Daftar <object []> hasil = query.list (); * System.out.println (results.size ()); * * Deduplikasi: * Hanya menggunakan metode berbeda untuk menghapus duplikasi * * string hql = "Pilih D berbeda dari departemen D kiri bergabung dengan D.emps"; * Kueri kueri = session.createquery (hql); * * Daftar <department> depts = query.list (); * System.out.println (depts.size ()); * * untuk (departemen departemen: depts) { * system.out.println (dept.getName () + dept.getemps (). size ()); *} * */@Uji public void testleftjoin () {string hql = "Pilih berbeda D dari departemen d kiri ground d.emps"; kueri kueri = session.createqueery (hql); daftar <deptore> depts = query.list (); System.out.println (depts.size (); for (Depts); Depts. Dept.getemps (). size ());}}/*** Koneksi internal impulsif: Fitur adalah: Jangan mengembalikan tabel kiri tetapi tidak memenuhi kondisi* gabungan bagian dalam kata kunci yang mewakili koneksi internal yang mendesak, dan kata -kata kunci yang terkait, masing -masing Departemen () Metode yang disimpan dalam koleksi yang dikembalikan oleh koleksi ke objek, masing -masing Departemen Tempat Tua. * Koneksi Dalam: * Kata kunci bergabung dalam mewakili koneksi internal, dan kata kunci bagian dalam juga dapat dihilangkan. Catatan hasil kueri dari setiap elemen yang disimpan dalam metode daftar () yang ditetapkan adalah jenis array objek. Setiap elemen adalah tipe array objek * Jika Anda ingin koleksi dikembalikan dengan metode daftar () untuk hanya berisi objek departemen, Anda dapat menggunakan kata kunci pilih dalam pernyataan kueri HQL * * * */@tes public void testinnerjoInfetch () {// string hql = "pilih Dighter D dari departemen d kiri bergabung dengan fetch d.emps"; string hql = " session.createquery (hql); Daftar <department> depts = query.list (); depts = new arraylist <> (LinkedHashSet baru (depts)); System.out.println (depts.size (); for (departemen dept: depts) {System.out.println (Dept.getname () (Departemen) {System.out.println (Dept.get () (Departemen) {System.out.println (Dept.get () (Departemen) {System.out.println (Dept.get. );}} // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@Tes public void testleftjoInfetch2 () {string hql = "dari karyawan e left goint fetch e.dept"; query query = session.createQuery (hql); Daftar <karyawan> EMPS = query.list (); System.out.println (emps.size ()); for (karyawan evev: emps. emp.getDept ());}}}Meringkaskan
Di atas adalah konten lengkap dari artikel ini tentang perbedaan antara koneksi mendesak hibernasi dan koneksi biasa. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Diskusi singkat tentang masalah pemuatan mendesak Hibernate (banyak Asosiasi Kunci Asing)
Penjelasan terperinci tentang kode operasi untuk menambah, menghapus, memodifikasi, dan mencari di Hibernate
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!