วันนี้ฉันเรียนรู้วิธีเพิ่มลบแก้ไขและตรวจสอบฐานข้อมูลผ่านไฮเบอร์เนต ให้ฉันแนะนำสั้น ๆ :
ก่อนสร้างชั้นเรียนนักเรียน:
แพ็คเกจ com.hibernate.model; นำเข้า Javax.persistence.column; นำเข้า Javax.persistence.entity; นำเข้า Javax.persistence.generatedValue; นำเข้า Javax.persistence.id; บ้านเกิด; @id @GeneratedValue @column (name = "_id") public int getId () {return id;} โมฆะสาธารณะ setId (int id) {this.id = id;}@column (name = "_name") สตริงสาธารณะ getName () {ชื่อกลับ; getage () {return Age;} public void setage (อายุ int) {this.age = age;}@column (name = "_birthplace") Public String getBirthplace () {กลับบ้านเกิด;} โมฆะสาธารณะ setbirthplace จากนั้นสร้างกรณีทดสอบประเภท Junit:
พูดคุยเกี่ยวกับเมธอด session.save () ก่อนนั่นคือเพิ่ม:
แพ็คเกจ com.hibernate.model; นำเข้า org.hibernate.query; นำเข้า org.hibernate.session; นำเข้า org.hibernate.sessionfactory; นำเข้า org.hibernate.cfg.annotationconfiguration; นำเข้า org.junit.afterclass; Static SessionFactory sf = null; @beforeclass โมฆะสาธารณะคงที่ beforeclass () {ลอง {sf = new AnnotationConfiguration () กำหนดค่า (). buildSessionFactory (); // มันเป็นการดีที่สุดที่จะได้รับข้อยกเว้นที่นี่ testsave () {// เพิ่มครู t = ครูใหม่ (); t.setage (23); t.setName ("moluo"); t.setbirthplace ("huangshan"); เซสชั่น = sf.getCurrentsession afterclass () {sf.close ();}}ผลลัพธ์ที่สดใส:
มาพูดคุยเกี่ยวกับวิธี session.delete () นั่นคือลบ:
@Test โมฆะสาธารณะ testDelete () {// ลบครู t = ครูใหม่ (); t.setId (2); เซสชั่นเซสชัน = sf.getCurrentsession (); session.beginTransaction (); session.delete (t); session.getTransaction ()ผลลัพธ์ที่สดใส:
จากนั้นไปที่ session.get () นั่นคือตรวจสอบ:
@Test Public Void TestGet () {// รับเซสชัน session = sf.getCurrentsession (); session.beginTransaction (); ครู t = (ครู) เซสชั่น get (teacher.class, 1); System.out.println ("ชื่อ:"+t.getName ()); session.getTransaction (). commit (); -ผลลัพธ์ที่สดใส:
Hibernate: Select Teacher0 _._ id เป็น column1_1_0_, teacher0 _._ อายุเป็น column2_1_0_, teacher0 _._ บ้านเกิดเป็น column3_1_0_, teacher0 _._ ชื่อเป็น column4_1_0_ จาก _Teacher Teacher0_ ที่ครู 0 _._ id =? ชื่อคือ: moluo
ลองใช้วิธีการสืบค้นอื่น: session.load ():
@Test โมฆะสาธารณะ testLoad () {// โหลดเซสชันเซสชัน = sf.getCurrentsession (); session.beginTransaction (); ครู t = (ครู) เซสชั่นโหลด (ครูคลาส 1); System.out.println ("ชื่อ:"+t.getName ()); session.getTransaction (). commit (); -ผลลัพธ์ที่สดใส:
Hibernate: Select Teacher0 _._ id เป็น column1_1_0_, teacher0 _._ อายุเป็น column2_1_0_, teacher0 _._ บ้านเกิดเป็น column3_1_0_, teacher0 _._ ชื่อเป็น column4_1_0_ จาก _Teacher Teacher0_ ที่ครู 0 _._ id =? ชื่อคือ: moluo
ที่นี่เราอธิบายความแตกต่างระหว่างการสืบค้นทั้งสองนี้: ก่อนอื่นทั้งหมดเมื่อวัตถุที่จะเป็นแบบสอบถามไม่มีอยู่ข้อมูลที่ส่งคืนจะแตกต่างกัน รับเมธอดจะกลับมา: java.lang.nullpointerexception
วิธีการโหลดจะกลับมา: org.hibernate.ObjectNotFoundException: norowwiththegivenidentifierexists
ประการที่สองโหลดส่งคืนวัตถุพร็อกซีและคำสั่ง SQL จะออกเมื่อใช้จริง นอกจากนี้รับข้อมูลโหลดโดยตรงจากฐานข้อมูลโดยไม่ชักช้า
สุดท้ายมาพูดคุยเกี่ยวกับวิธีการอัปเดตที่ใช้กันมากที่สุดและอัปเดตผ่านคำสั่ง HQL:
@Test โมฆะสาธารณะ testUpDate () {// อัปเดตเซสชันเซสชัน = sf.getCurrentsession (); session.beginTransaction (); string url = "อัปเดตครู t ตั้งค่า t.birthplace = 'anhui' โดยที่ id = 1"; // โปรดทราบว่าครูที่นี่จะต้องเป็นชื่อวัตถุไม่ใช่ชื่อตาราง t คือนามแฝงของการสืบค้นวัตถุ q = เซสชัน. createquery (URL); // แพ็คเกจที่นำเข้าที่นี่คือ: นำเข้า org.hibernate.query; Q.ExecuteUpdate (); session.getTransaction (). commit (); -ผลลัพธ์ที่สดใส:
ผ่านการอัปเดตบ้านเกิดของ Moro ได้รับการอัปเดตจาก Huangshan เป็น Anhui ...
ในความเป็นจริงมีวิธีการอัปเดตของ session.update () แต่วิธีการอัปเดตนี้เป็นเพียงวิธีการอัปเดตนี้ หากคุณอัปเดตเพียงส่วนหนึ่งของคอลัมน์ในแต่ละครั้งวิธีการอัปเดตนี้จะอัปเดตคอลัมน์ทั้งหมดซึ่งไม่ได้มีประสิทธิภาพมากดังนั้นจึงไม่แนะนำให้ใช้ แน่นอนว่ายังมีวิธีการชดเชยสำหรับพวกเขา ตัวอย่างเช่นหากคุณใช้ XML คุณสามารถตั้งค่า update = "false" ในแท็กคุณสมบัติของคอลัมน์ที่คุณไม่ต้องการได้รับการอัปเดตในไฟล์การกำหนดค่า นอกจากนี้คุณยังสามารถตั้งค่าการอัปเดตแบบไดนามิกหลังจากคลาสของไฟล์การกำหนดค่า: Dynamic-update = "true"; แน่นอนถ้าคุณใช้คำอธิบายประกอบคุณสามารถตั้งค่า @column (update = "false"); ในความเป็นจริงสิ่งเหล่านี้ไม่ยืดหยุ่นและการใช้ HQL นั้นดีที่สุดดังนั้นเฉพาะรหัสการอัปเดต HQL เท่านั้นที่โพสต์ที่นี่
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการวิเคราะห์ตัวอย่างของ Hibernate ในการเพิ่มการลบการแก้ไขและการค้นหาการดำเนินการผ่านเซสชัน ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงเว็บไซต์นี้:
เรียนรู้อย่างรวดเร็วเกี่ยวกับเซสชั่นในไฮเบอร์เนต
รหัสอินสแตนซ์ระดับแอตทริบิวต์ไฮเบอร์เนต
Hibernate ใช้ HBM.XML เพื่อกำหนดค่าการวิเคราะห์ความสัมพันธ์การแมป
หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!