ไฮเบอร์เนตความแตกต่างระหว่างการเชื่อมต่อเร่งด่วนและการเชื่อมต่อทั่วไป
การแนะนำและคำอธิบายที่เกี่ยวข้องได้รับการแสดงความคิดเห็นในรหัสดังนั้นคุณสามารถอ้างถึงได้
แพ็คเกจ com.baidu.test; นำเข้า java.util.arraylist; นำเข้า java.util.linkedhashset; นำเข้า java.util.list; นำเข้า org.hibernate.query; นำเข้า org.hibernate.session; org.hibernate.cfg.configuration; นำเข้า org.hibernate.service.serviceregistry; นำเข้า org.hibernate.service.serviceregistryBuilder นำเข้า org.junit.after; com.baidu.leftjoin.employee; Public Class testhql_leftjoin {ส่วนตัวเซสชัน sessionfactory เซสชันส่วนตัวเซสชันเซสชันส่วนตัวธุรกรรมการทำธุรกรรมส่วนตัว; @Before โมฆะสาธารณะเริ่มต้น () {การกำหนดค่าการกำหนดค่า = การกำหนดค่าใหม่ () กำหนดค่า () .buildServiceRegistry (); SessionFactory = การกำหนดค่า. buildSessionFactory (serviceregistry); session = sessionfactory.opensession (); ธุรกรรม = session.beginTransaction ();}@หลังจากโมฆะสาธารณะทำลาย () {transaction.commit (); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ หลายคน ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * 2. รายการ () วิธีการเก็บข้อมูลอ้างอิงไปยังวัตถุเอนทิตีในชุดที่ส่งคืน คอลเลกชันของพนักงานที่เกี่ยวข้องกับวัตถุแต่ละแผนกได้รับการเริ่มต้น * จัดเก็บวัตถุเอนทิตีทั้งหมดที่เกี่ยวข้องทั้งหมด * 3. ผลลัพธ์การสืบค้นอาจมีองค์ประกอบที่ซ้ำกันและองค์ประกอบที่ซ้ำกันสามารถกรองผ่าน hashset * * การซ้ำซ้อน: * วิธีที่ 1: ใช้ string * string hql = "เลือก D ที่แตกต่างจากแผนก d ซ้ายเข้าร่วม d.emps"; * Query Query = session.createquery (HQL); * * รายการ <erection> depths = query.list (); * System.out.println (depts.size ()); * * วิธีการ 2 * สตริง hql = "จากแผนก d ซ้ายเข้าร่วม fetch d.emps"; * Query Query = session.createquery (HQL); * * รายการ <erection> Depts = query.list (); * * depts = new ArrayList <> (ใหม่ LinkedHashSet (depts)); * System.out.println (depts.size ()); * * สำหรับ (แผนกแผนก: Depts) { * System.out.println (dept.getName () + "-" + dept.getemps (). size ()); *} * * */@ทดสอบโมฆะสาธารณะ public testleftjoinfetch () {// string hql = "เลือก D ที่แตกต่างจากแผนก d ซ้ายเข้าร่วม d.emps"; // query query = session.createquery (hql); // // // list <pections) joint.list (depts. Fetch D.EMPS "; Query Query = Session.Createquery (HQL); รายการ <erection> Depts = query.list (); System.out.println (depts.size ()); Depts = new ArrayList <> (New LinkedHashset (Depts)); System.out.println DEPT: Depts) {System.out.println (dept.getName () + "-" + dept.getemps (). size ());}}/** * ด้านนอกซ้ายเข้าร่วม: * 1 คำหลักเข้าร่วมด้านซ้ายหมายถึงการเข้าร่วมด้านนอกด้านซ้าย * 2. ประเภทอาร์เรย์วัตถุจะถูกเก็บไว้ในคอลเลกชันที่ส่งคืนด้วยวิธีรายการ () * 3. กำหนดกลยุทธ์การค้นหาของการรวบรวมพนักงานตามไฟล์การกำหนดค่า * 4. หากคุณต้องการให้คอลเลกชันที่ส่งคืนโดยเมธอดรายการ () มีเพียงวัตถุแผนก * คุณสามารถใช้คำหลักที่เลือกในคำสั่งการสืบค้น HQL * * ผลลัพธ์ของการสืบค้นคำสั่งดังกล่าวซ้ำแล้วซ้ำอีก: * สตริง HQL = "จากแผนก * Query Query = session.createquery (HQL); * * list <object []> results = query.list (); * System.out.println (results.size ()); * * การซ้ำซ้อน: * ใช้วิธีการที่แตกต่างกันเท่านั้นเพื่อลบการทำซ้ำ * * สตริง HQL = "เลือก DISTICE D จากแผนก D ซ้ายเข้าร่วม D.EMPS"; * Query Query = session.createquery (HQL); * * รายการ <erection> Depts = query.list (); * System.out.println (depts.size ()); * * สำหรับ (แผนกแผนก: Depts) { * System.out.println (dept.getName () + dept.getemps (). size ()); *} * */@ทดสอบโมฆะสาธารณะ public testleftjoin () {string hql = "เลือก distint d จากแผนก d ซ้ายเข้าร่วม d.emps"; query query = session.createquery (hql); รายการ <erection> depts = query.list () system.ut.println (depts.size (depts) dept.getemps (). size ());}}/** * การเชื่อมต่อภายในหุนหันพลันแล่น: คุณสมบัติคือ: อย่าส่งคืนตารางซ้าย แต่ไม่ตรงตามเงื่อนไข * คำหลักเข้าร่วมการเข้าร่วมแสดงถึงการเชื่อมต่อภายในเร่งด่วน การเชื่อมต่อ: * คำหลักเข้าร่วมด้านในแสดงถึงการเชื่อมต่อภายในและสามารถละเว้นคำหลักภายในได้ บันทึกของผลลัพธ์การสืบค้นของแต่ละองค์ประกอบที่เก็บไว้ในชุดเมธอด () คือประเภทอาร์เรย์วัตถุ แต่ละองค์ประกอบคือประเภทอาร์เรย์วัตถุ * หากคุณต้องการให้คอลเลกชันที่ส่งคืนโดยเมธอดรายการ () มีเพียงวัตถุแผนกคุณสามารถใช้คำหลักที่เลือกในคำสั่ง query hql * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *” session.createquery (HQL); รายการ <erection> Depts = query.list (); depts = new ArrayList <> (ใหม่ LinkedHashSet (Depts)); System.out.println (depts.size ()) (Dept. ) (Dept. ) (Dept. ) (Dept. ) - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ โมฆะสาธารณะ testleftjoinfetch2 () {string hql = "จากพนักงาน e ซ้ายเข้าร่วม fetch e.dept"; query query = session.createquery (hql); รายการ <sportee> emps = query.list (); system.out.println (emps.size (); emp.getDept ());}}}สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับความแตกต่างระหว่างการเชื่อมต่อเร่งด่วนไฮเบอร์เนตและการเชื่อมต่อทั่วไป ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงเว็บไซต์นี้ต่อไปได้:
การอภิปรายสั้น ๆ เกี่ยวกับปัญหาการโหลดเร่งด่วนของไฮเบอร์เนต (สมาคมคีย์ต่างประเทศหลายแห่ง)
คำอธิบายโดยละเอียดของรหัสการทำงานสำหรับการเพิ่มลบแก้ไขและค้นหาในไฮเบอร์เนต
หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!