ศูนย์เกี่ยวกับไฮเบอร์เนต
ไฮเบอร์เนตหมายถึงการจำศีลซึ่งหมายถึงการจำศีลของสัตว์ แต่ไฮเบอร์เนตที่กล่าวถึงในบทความนี้ไม่มีส่วนเกี่ยวข้องกับการจำศีล แต่เป็นสมาชิกของกรอบ SSH2 ที่จะกล่าวถึงต่อไป Hibernate เป็นโครงการโอเพ่นซอร์ส มันเป็นกรอบของโมเดลความสัมพันธ์เชิงวัตถุและมีการห่อหุ้มที่มีน้ำหนักเบามากของ JDBC โปรแกรมเมอร์สามารถใช้ความคิดการเขียนโปรแกรมวัตถุเพื่อพัฒนาในระหว่างการพัฒนา
ดาวน์โหลดที่อยู่: http://hibernate.org/orm/downloads/
หมายเหตุ: ความแตกต่างระหว่างน้ำหนักเบาและเฮฟวี่เวท แพคเกจเฟรมเวิร์กน้ำหนักเบามีขนาดเล็กและใช้งานง่ายและง่ายต่อการทดสอบและมีประสิทธิภาพในการพัฒนาสูง แพคเกจเฟรมเวิร์กเฮฟวี่เวิร์คมีขนาดใหญ่ขึ้นและกระบวนการทางธุรกิจของบรรจุภัณฑ์ภายในนั้นซับซ้อนกว่าและยากต่อการทดสอบเช่น struts
โมเดลเชิงสัมพันธ์ของวัตถุ:
ไฮเบอร์เนตใช้การแมปของแบบจำลองความสัมพันธ์เชิงวัตถุ เมื่อการเขียนโปรแกรมโปรแกรมเมอร์สามารถใช้โมเดลวัตถุโดยตรงเพื่อใช้งานฐานข้อมูล มันมีน้ำหนักเบาห่อหุ้ม JDBC และยังสรุปคำสั่ง SQL สำหรับการดำเนินการฐานข้อมูลซึ่งใช้งานง่าย แม้ว่ามันจะมีข้อได้เปรียบมากมาย แต่ก็ยากที่จะปรับแต่งโดยใช้คำสั่งที่มีลักษณะฐานข้อมูลเช่นขั้นตอนที่เก็บไว้ ฯลฯ
ข้อดีและข้อเสียของไฮเบอร์เนต:
(1) ข้อดี
A. ปรับปรุงผลผลิต;
B. ทำให้การพัฒนามีวัตถุประสงค์มากขึ้น (ความต้านทานต่อความต้านทาน);
C. พกพา;
D. ไม่มีการรุกรานและสนับสนุนความโปร่งใสและการคงอยู่
(2) ข้อเสีย
A. ข้อความที่ใช้ข้อมูลฐานข้อมูลจะยากที่จะปรับ
B. มีปัญหาเกี่ยวกับการอัปเดตข้อมูลขนาดใหญ่
C. มีฟังก์ชั่นการสืบค้นทางสถิติจำนวนมากในระบบ
2. ตัวอย่างไฮเบอร์เนต
บทความข้างต้นให้การตีความเบื้องต้นของไฮเบอร์เนต ด้วยทฤษฎีมีการฝึกฝนมากขึ้นอย่างแน่นอน คุณไม่เข้าใจความสะดวกสบายโดยไม่ต้องใช้ไฮเบอร์เนต นี่เป็นเหมือนคนที่ชอบดื่มรสนิยม Moutai เป็นครั้งแรก หลังจากใช้งานแล้วคุณสามารถเข้าใจได้อย่างลึกซึ้งยิ่งขึ้น
ตัวอย่างต่อไปนี้ใช้ฐานข้อมูล MySQL ฐานข้อมูลชื่อ Hibernate_First ถูกสร้างขึ้นใน MySQL ตารางผู้ใช้ถูกสร้างขึ้นผ่านไฟล์การแมปไฮเบอร์เนตโดยใช้วิธีการเขียนโปรแกรมวัตถุและเพิ่มข้อมูลลงในตารางผู้ใช้
ขั้นตอนเฉพาะ:
(1) สร้างแอปพลิเคชัน Java ปกติ
(2) เพิ่มแพ็คเกจ JAR ของไฮเบอร์เนต เมื่อเพิ่มแพ็คเกจ JAR คุณจะต้องแนะนำ Hibernate.jar แพ็คเกจ JAR ของบุคคลที่สามที่อ้างอิงโดย Hibernate และแพ็คเกจ JAR ที่เชื่อมต่อกับ Hibernate และ MySQL
(3) เพิ่มไฟล์การกำหนดค่าการเชื่อมต่อฐานข้อมูล hibernate.cfg.xml
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! doctype hibernate-configuration สาธารณะ "-// hibernate/hibernate การกำหนดค่า dtd 3.0 // en" "http://hibernate.sourceforge.net/hibernate-configuration-3 <session-factory> <property name = "hibernate.connection.driver_class"> com.mysql.jdbc.driver </คุณสมบัติ> <property name = "hibernate.connection.url"> jdbc: mysql: // localhost: 3306/hibernate_first <property name = "hibernate.connection.password"> ab12 </property> <!-ภาษาถิ่น: ภาษาถิ่น, API พื้นฐานที่ห่อหุ้ม, คล้ายกับรันไทม์, แปลงฐานข้อมูลเป็นภาษาที่สอดคล้องกันในการกำหนดค่า-> <property name = "hibernate.dialect" -> <property name = "hibernate.show_sql"> true </property> <property name = "hibernate.format_sql"> true </property> <mapping resource = "com/hibernate/user.hbm.xml"/> </session-factory>
(4) สร้างชื่อคลาสเอนทิตีเป็น user.java
แพ็คเกจ com.hibernate; นำเข้า java.util.date; ผู้ใช้ระดับสาธารณะ {รหัสสตริงส่วนตัว; สตริงสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (รหัสสตริง) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } วันที่สาธารณะ getCreateTime () {return createTime; } โมฆะสาธารณะ setCreateTime (วันที่ createTime) {this.createTime = createTime; } วันที่สาธารณะ getExpireTime () {ส่งคืนหมดอายุ; } โมฆะสาธารณะ setExpireTime (วันที่วันหมดอายุ) {this.expireTime = ExpireTime; } ชื่อสตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว วันที่ส่วนตัว createTime; วันที่เอกชนหมดอายุ; - (5) สร้างไฟล์การแมปไฟล์ user.hbm.xml ของคลาสเอนทิตีผู้ใช้ให้กรอกการแมปของคลาสเอนทิตีและเพิ่มไฟล์ลงในไฟล์ hibernate.cfg.xml
<? xml เวอร์ชัน = "1.0"?> <! Doctype hibernate-mapping สาธารณะ "-// hibernate/hibernate mapping dtd 3.0 // en" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" 3.4.0.cr1-> <hibernate-mapping> <class name = "com.hibernate.user"> <id name = "id"> <generator/> </id> <name property = "name"/> <property name = "password"/> <property name = "createTime"/>
(6) เขียน ExportDb.java และแปลงไฟล์การแมปเป็น DDL ที่เกี่ยวข้อง
แพ็คเกจ com.hibernate; นำเข้า org.hibernate.cfg.configuration; นำเข้า org.hibernate.tool.hbm2ddl.schemaexport; คลาสสาธารณะ ExportDB {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// แรกประกาศเพื่อรับไฟล์การกำหนดค่า // เริ่มต้นอ่าน hibernate.cfg.xml การกำหนดค่าไฟล์ cfg = การกำหนดค่าใหม่ () กำหนดค่า (); // ส่งออกไฟล์อ่าน XML ไปยัง DDL SchemaExport Export = ใหม่ schemaexport (CFG); Export.Create (จริงจริง); - เรียกใช้คลาส ExportDB เพื่อสร้างตารางฐานข้อมูลให้เสร็จสมบูรณ์ มุมมองหลังจากดูการดำเนินการเฉพาะใน CMD มีดังนี้:
ตัวอย่างข้างต้นจะเสร็จสิ้นการดำเนินการของการเชื่อมต่อกับฐานข้อมูลและสร้างตารางในฐานข้อมูลเท่านั้น หลังจากสร้างตารางคุณต้องเพิ่มข้อมูลลงในตารางสร้างไคลเอนต์คลาสไคลเอนต์และเพิ่มข้อมูลผู้ใช้ใหม่ลงในตารางผู้ใช้ รหัสเฉพาะมีดังนี้:
แพ็คเกจ com.hibernate; นำเข้า java.util.date; นำเข้า org.hibernate.session; นำเข้า org.hibernate.sessionfactory; นำเข้า org.hibernate.cfg.configuration; ไคลเอนต์คลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// อ่าน hibernate.cfg.xml การกำหนดค่าไฟล์ cfg = การกำหนดค่าใหม่ (). configure (); // สร้าง SessionFactory ซึ่งเทียบเท่ากับกระจกฐานข้อมูล เนื่องจาก SessionFactory เป็นกระจกจึงเป็นการดีที่สุดที่จะสร้างมันครั้งเดียว/โดยปกติจะปลอดภัย SessionFactory Factory = cfg.buildsessionFactory (); // เซสชันเซสชันที่ดึงมา = null; ลอง {session = factory.opensession (); // เปิดเซสชันการทำธุรกรรม BEGINTRANSACTION (); ผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); user.setName ("Zhang San"); user.setPassword ("123"); user.setCreateTime (วันที่ใหม่ ()); // บันทึกเซสชันวัตถุผู้ใช้ SAVE (ผู้ใช้); // commit transaction session.getTransaction (). commit (); } catch (exception e) {e.printstacktrace (); // พิมพ์ข้อความแสดงข้อผิดพลาด // การทำธุรกรรมย้อนกลับ getTransaction (). การย้อนกลับ (); } ในที่สุด {ถ้า (เซสชัน! = null) {ถ้า (session.isopen ()) {// ปิดเซสชันเซสชัน. close (); - ดูข้อมูลที่เพิ่มใน MySQL ดังแสดงในรูปต่อไปนี้:
ข้อมูลของการดำเนินการข้างต้นถูกเขียนลงในฐานข้อมูล หลังจากบันทึกข้อมูลในฐานข้อมูลแถวที่เกี่ยวข้องจะถูกสร้างขึ้นในฐานข้อมูล อย่างไรก็ตามยังไม่ได้รับการบันทึก แต่มีแถวข้อมูลที่สอดคล้องกันในฐานข้อมูล ข้อมูลจะถูกส่งไปยังฐานข้อมูลหลังจากการส่งธุรกรรมโดยใช้เซสชันเสร็จสิ้น