บทความนี้อธิบายวิธีการจำศีลเพื่อเพิ่มข้อมูลในแบทช์ แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
1. Hibernate_016_batchadddata โครงสร้างไดเรกทอรีโปรแกรม:
2. แพ็คเกจ JAR ที่แนะนำในไดเรกทอรี LIB:
3. Medicinedao.java ซอร์สโค้ด:
แพ็คเกจ com.xqh.dao; นำเข้า java.util.list; นำเข้า org.hibernate.session; นำเข้า com.xqh.model.medicine; นำเข้า com.xqh.util.hibernateutil;/*** การดำเนินการฐานข้อมูลยา************ SaveMedicines (รายการ <monical> ms) {เซสชันเซสชัน = null; if (ms! = null && ms.size ()> 0) {ลอง {session = hibernateutil.getSession (); // รับ session.beginTransaction (); // เปิดสิ่งที่แพทย์ยา = null; // สร้างวัตถุยา // ลูปวัตถุยาสำหรับ (int i = 0; i <ms.size (); i ++) {ยา = (ยา) Ms.get (i); // รับเซสชันยาเสพติด (ยา); // บันทึกวัตถุยา // ชุดของวัตถุที่แทรกถูกเขียนลงในฐานข้อมูลและหน่วยความจำฟรีถ้า (i % 10 == 0) {session.flush (); session.clear (); }} session.getTransaction (). commit (); // ส่งสิ่งต่าง ๆ } catch (Exception e) {E.printStackTrace (); // พิมพ์ข้อความแสดงข้อผิดพลาด session.getTransaction (). การย้อนกลับ (); // ข้อผิดพลาดจะย้อนกลับไป} ในที่สุด {hibernateutil.losesession (เซสชัน); // ปิดเซสชัน}}}}4. ยาซอร์สโค้ด java:
แพ็คเกจ com.xqh.model;/*** คลาสการคงอยู่ของยา*/ยาระดับสาธารณะ {ID จำนวนเต็มส่วนตัว; // หมายเลข id ชื่อสตริงส่วนตัว; // ชื่อยาราคาสองราคาส่วนตัว; // ราคาสตริงส่วนตัว PRATTORYADD; // ที่อยู่โรงงานจำนวนเต็มสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (ID จำนวนเต็ม) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } สาธารณะ double getPrice () {ราคาคืน; } โมฆะสาธารณะ setPrice (ราคาสองเท่า) {this.price = ราคา; } สตริงสาธารณะ getFactoryAdd () {return FactoryAdd; } โมฆะสาธารณะ setFactoryAdd (String FactoryAdd) {this.factoryAdd = FactoryAdd; -5. Medicine.hbm.xml ซอร์สโค้ด:
<? xml version = "1.0"?> <! doctype hibernate-mapping สาธารณะ "-// hibernate/hibernate mapping dtd 3.0 // en" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" table = "tb_medicine_batch"> <id name = "id"> <generator/> </id> <ชื่อคุณสมบัติ = "name" not-null = "true" length = "200"/> <property name = "price" not-null = "true"/> <property name = "factoryadd"
6.SaveMedicine.java ซอร์สโค้ด:
แพ็คเกจ com.xqh.servlet; นำเข้า java.io.ioexception; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; javax.servlet.http.htttservletResponse; นำเข้า com.xqh.dao.medicinedao; นำเข้า com.xqh.model.medicine; savemedicine ระดับสาธารณะขยาย Httpservlet {ส่วนตัวคงที่ โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {// ชื่อสตริงชื่อยา [] = request.getParameterValues ("ชื่อ"); // ราคาสตริงราคา [] = request.getParameterValues ("ราคา"); // สตริงที่อยู่จากโรงงานเพิ่ม [] = request.getParameterValues ("FactoryAdd"); // การตัดสินความถูกต้องถ้า (ชื่อ! = null && ราคา! = null && เพิ่ม! = null) {ถ้า (names.length == price.length && names.length == adds.length) {// ตัวอย่างรายการคอลเลกชันรายการ <monical> ms = new ArrayList <การแพทย์> (); ยา m = null; // drug object // อินสแตนซ์วัตถุยาในทางกลับกันและเพิ่มลงในคอลเลกชันสำหรับ (int i = 0; i <names.length; i ++) {m = ยาใหม่ (); // อินสแตนซ์ยา // กำหนดแอตทริบิวต์ m.setName (ชื่อ [i]); M.SetPrice (double.parsedouble (ราคา [i])); M.SetFactoryAdd (เพิ่ม [i]); m.add (m); // เพิ่มลงในชุด} // อินสแตนซ์ medicinedao object medicinedao dao = new Medicinedao (); dao.savemedicines (MS); // batch บันทึกคำขอยา setAttribute ("ข้อมูล", "ข้อมูลยาได้รับการบันทึกสำเร็จ !!!"); }} // ส่งต่อ (คำขอ, การตอบกลับ); -7. CANTACLEENCODINGFILTER.JAVA ซอร์สโค้ด:
/ * * หากต้องการเปลี่ยนเทมเพลตนี้เลือกเครื่องมือ | เทมเพลต * และเปิดเทมเพลตในตัวแก้ไข */แพ็คเกจ com.xqh.util; นำเข้า java.io.ioexception; นำเข้า Javax.servlet.filter; นำเข้า Javax.servlet.filterchain; นำเข้า Javax.servlet.filterconfig; นำเข้า Javax.servlet.servletexception; * ตัวกรองการเข้ารหัสอักขระ */คลาสสาธารณะตัวละครตัวอักษร Filter ใช้ตัวกรอง {การเข้ารหัสสตริงที่ป้องกัน = null; ตัวกรอง FilterConfig ที่ได้รับการป้องกัน = null; Public Void Init (FilterConfig FilterConfig) พ่น servletexception {this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter ("การเข้ารหัส"); } โมฆะสาธารณะ dofilter (คำขอ ServletRequest, การตอบสนอง servletResponse, ห่วงโซ่ตัวกรอง) พ่น IOException, servletexception {ถ้า (การเข้ารหัส! = null) {request.Setcharacterencoding (การเข้ารหัส); Response.setContentType ("ข้อความ/html; charset ="+การเข้ารหัส); } chain.dofilter (คำขอ, การตอบกลับ); } โมฆะสาธารณะทำลาย () {this.encoding = null; this.filterConfig = null; -8. hhibernateutil.java ซอร์สโค้ด:
แพ็คเกจ com.xqh.util; นำเข้า org.hibernate.hibernateException; นำเข้า org.hibernate.session; นำเข้า org.hibernate.sessionfactory; นำเข้า org.hibernate.cfg.configuration;/** โรงงาน = null; // บล็อกคงที่คงที่ {ลอง {// โหลดการกำหนดค่าไฟล์การกำหนดค่า hibernate cfg = การกำหนดค่าใหม่ (). configure (); // อินสแตนซ์ SessionFactory Factory = CFG.BuildSessionFactory (); } catch (hibernateException e) {e.printStackTrace (); }} / *** รับออบเจ็กต์เซสชัน* @return วัตถุเซสชัน* / เซสชันคงที่สาธารณะ getSession () {// ถ้า sessionfacroty ไม่ว่างเปล่าเปิดใช้งานเซสชันเซสชันเซสชัน = (โรงงาน! = null)? Factory.opensession (): Null; เซสชั่นกลับ; } / *** รับออบเจ็กต์ SessionFactory* @return SessionFactory Object* / Public Static SessionFactory GetSessionFactory () {return Factory; } / *** ปิดเซสชัน* @Param Session Object* / Public Static Void ปิด (เซสชันเซสชัน) {ถ้า (เซสชัน! = null) {ถ้า (session.isopen ()) {session.close (); // ปิดเซสชัน}}}}9.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> <!-Dialect-> <property name = "Dialect"> org.hibernate.dialect.mysqldialect </คุณสมบัติ> <!-การเชื่อมต่อฐานข้อมูล-> <property name = "Connection.url"> jdbc: mysql: // localhost: 3306/การเรียนรู้ <!-รหัสผ่านการเชื่อมต่อฐานข้อมูล-> <property name = "connection.password"> 1120 </perty> <!-ไดรเวอร์ฐานข้อมูล-> <property name = "connection.driver_class"> com.mysql.jdbc.driver </คุณสมบัติ> <! name = "hibernate.hbm2ddl.auto"> อัปเดต </property> <!-ไฟล์การแมป-> <การแมปทรัพยากร = "com/xqh/model/medicine.hbm.xml"/> </session-factory> </hibernate-configuration>
10. log4j.properties ซอร์สโค้ด:
### ข้อความบันทึกโดยตรงไปยัง stdout ### log4j.appender.stdout = org.apache.log4j.consoleAppenderlog4j.appender.stdout.target = system.outlog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.aptdout %c {1}: %l - %m %n ### ข้อความโดยตรงไปยังไฟล์ hibernate.log #### log4j.appender.file = org.apache.log4j.fileAppender#log4j.appender.file.file = hibernate.log#log4j.appender.file.layout = org.apache.log4j.patternlayout %c {1}: %l - %m %n ### ตั้งค่าระดับบันทึก - สำหรับการบันทึกการบันทึก verbose เพิ่มเติม 'ข้อมูล' เป็น 'debug' ### log4j.rootlogger = เตือน, stdout#log4j.logger.org.hibernate = ข้อมูล#log4j.logger.org.hibernate = debug กิจกรรม#log4j.logger.org.hibernate.hql.ast.ast = debug ### บันทึกเพียง sql#log4j.logger.org.hibernate.sql = debug ### บันทึกพารามิเตอร์ jdbc bind parameters #### log4j.logger.org.hibernate.type = ข้อมูล#log4j.logger.org.hibernate.type = debug ### บันทึกการส่งออก/อัปเดต #### log4j.logger.org.hibernate.tool.hbm2ddl = debug# ต้นไม้#log4j.logger.org.hibernate.hql = debug ### กิจกรรมแคชบันทึก #### log4j.logger.org.hibernate.cache = debug ### กิจกรรมการทำธุรกรรม#log4j.logger.org.hibernate.transaction = debug ### การได้มา#log4j.logger.org.hibernate.jdbc = debug ## เปิดใช้งานบรรทัดต่อไปนี้หากคุณต้องการติดตามการเชื่อมต่อ ###### การรั่วไหลเมื่อใช้ DriverManagerConnectionProvider ########################################11.index.jsp ซอร์สโค้ด:
<%@ page language = "java" contentType = "ข้อความ/html" pageencoding = "gbk"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <head> #EBEBEB; Font-Family: Verdana; ขนาดตัวอักษร: 12px; พื้นหลังสี: #EBEBEB; สี: สีดำ; ความสูงของสาย: 20px; ความสูง: 30px;} </style> <script type = "text/javascript"> ฟังก์ชั่นเพิ่ม () {var a = document.getElementById ("a"); var b = document.getElementById ("B"); b.innerhtml += a.innerhtml; } ฟังก์ชั่นลด () {var a = document.getElementById ("a"); var b = document.getElementById ("B"); var stra = a.innerhtml; var strb = b.innerhtml; b.innerhtml = strb.substring (0, strb.length - stra.length); } ฟังก์ชั่นบันทึก (formName) {สำหรับ (i = 0; i <formName.length; i ++) {ถ้า (formName.Elements [i] .Value == "") {แจ้งเตือน ("โปรดกรอกข้อมูลทั้งหมด!"); กลับเท็จ; }}} </script> </head> <body onload = "เพิ่ม ()"> <form action = "savemedicine" method = "post" onsubmit = "return save (this);"> <table allign = "center" cellpadding = "3" cellpacing = "1"> <tr> </tr> <tr> <td> <div id = "b"> </div> </td> </td> </tr> <tr> <td> <อินพุตประเภท = "ปุ่ม" value = "เพิ่มบรรทัด" onClick = "เพิ่ม ()"> <อินพุตประเภท = " </form> <div id = "a" style = "display: none"> <table align = "center"> <tr> <td> ชื่อ: </td> <td> <อินพุต type = "text" name = "name" size = "13"> </td> <td> </td> <td> <อินพุต type = "text" name = "FactoryAdd" size = "30"> </td> </tr> </table> </div> </body> </html>12.result.jsp ซอร์สโค้ด:
<%@ page language = "java" contentType = "ข้อความ/html" pageencoding = "gbk"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en"> <html> href = "styles.css"> -> </head> <body> <div div = "center"> <font color = "red" size = "12px;" style = "font-weight: bold;"> $ {info} </font> <br> <br> <br> <br> <br> <a href = "index.jsp"> return </a> </div> </body> </html>13. ตารางข้อมูล tb_medicine_batch โครงสร้าง:
14. ภาพหน้าจอของผลการดำเนินงานของโปรแกรม:
ฉันหวังว่าคำอธิบายในบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคนตามกรอบการทำงานของไฮเบอร์เนต