Dieser Artikel beschreibt die Methode des Winterschlafes zum Hinzufügen von Daten in Stapeln. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Hibernate_016_BatchaddData Programmverzeichnisstruktur:
2. Das im Lib -Verzeichnis eingeführte JAR -Paket:
3.. Medicinedao.java Quellcode:
Paket com.xqh.dao; import java.util.list; import org.hibernate.session; import com.xqh.model.medicine; Savemedicine (List <Medizin> ms) {Sitzung Session = NULL; if (ms! // Sitzung besitzen.BeginTransaction (); // Dinge einschalten medizinisch einschalten = null; // Erstellen Sie ein Arzneimittelobjekt // Schleifen Sie das Arzneimittelobjekt für (int i = 0; i <ms.SIZE (); i ++) {Medicine = (Medicine) Frauget (i); // die Drogensitzung erhalten.Save (Medizin); // Speichern Sie das Arzneimittelobjekt // Die Stapel der eingefügten Objekte wird sofort in die Datenbank geschrieben, und der freie Speicher, wenn (i % 10 == 0) {Session.flush (); Session.clear (); }} Session.getTransaction (). commesent (); // Dinge einreichen} catch (Ausnahme e) {e.printstacktrace (); // Fehlermeldung drucken Session.getTransaction (). Rollback (); // Ein Fehler rollt das Ding zurück} schließlich {hibernateUtil.Closession (Sitzung); // Sitzung schließen}}}}4. Medicine.Java Quellcode:
Paket com.xqh.model;/*** Drogenpersistenzklasse*/öffentliche Klasse Medizin {private Integer id; // ID -Nummer privater Zeichenfolge Name; // Drogenname privater Doppelpreis; // Preis private String FactoryAdd; // Factory Address Public Integer getId () {return id; } public void setId (Integer id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public double getPrice () {Rückgabepreis; } public void setPrice (Doppelpreis) {this.price = price; } public String getFactoryAdd () {return factoryAdd; } public void setfactoryAdd (String factoryAdd) {this.factoryAdd = factoryAdd; }}5. Medizin.hbm.xml Quellcode:
<? table = "tb_medicine_batch"> <id name = "id"> <generator/> </id> <Eigenschaft name = "name" nicht-null = "true" length = "200"/> <Eigenschaft name = "preis" nicht-null = "true"/> <Eigenschaft name = "factoryAdd" length = "200"/> </class> </hibernate-maping>
6.Savemedicine.java Quellcode:
Paket com.xqh.servlet; import Java.io.ioxception; import Java.util.ArrayList; importieren java.util.list; import Javax.servlet.servletException; import Javax.servlet.http.httpervlet; import Javax.Servlet.http.http.http.http.http.http.http.http.http. javax.servlet.http.httpServletResponse; import com.xqh.dao.medicinedao; import com.xqh.model.medicine; public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ServletException aus, iOException {// darnername String -Namen [] = Anregung.getParameterValues ("Name"); // Preis Zeichenfolge Preise [] = Anfrage.GetParamTervalues ("Preis"); // Factory Adresszeichenfolge fügt [] = Request.getParameterValues ("factoryAdd") hinzu; // Gültigkeitsurteil if (Namen! = NULL && Preise! = NULL && fügt! = Null) {if (names.length == preise Medizin M = NULL; // Drogenobjekt // Das Arzneimittelobjekt verlegt und füge es der Sammlung für (int i = 0; i <names.length; i ++) {m = new Medicine () hinzu; // das Arzneimittel instanziieren // das Attribut M.SetName (Namen [i]) zuweisen; M.SetPrice (double.Parsedouble (Preise [i])); M.SetFactoryAdd (fügt [i]); M.Add (M); // dem Satz} // das Medicinedao -Objekt medicinedao dao = new Medicinedao () hinzufügen; Dao.Savemedicine (MS); // Batch Save the Drug Request.SetAttribute ("Info", "Drogeninformationen werden erfolgreich gespeichert !!!"); }} // vorwärts (Anfrage, Antwort); }}7. CharakterCodingFilter.java Quellcode:
/ * * Um diese Vorlage zu ändern, wählen Sie Tools | Vorlagen * und öffnen Sie die Vorlage im Editor. */paket com.xqh.util; import Java.io.ioException; import Javax.servlet.filter; import Javax.servlet.filterchain; import Javax.servlet.filterconfig; import Javax.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet. Zeichencodierungsfilter*/public class CharakterCodingfilter implementiert Filter {Protected String coding = null; geschützte Filterconfig filterconfig = null; public void init (filterconfig filterconfig) löst ServletException {this.filterconfig = filterConfig; this.encoding = filterconfig.getInitParameter ("codieren"); } public void dofilter (ServletRequest -Anfrage, ServletResponse -Antwort, Filterchain -Kette) löst IOException, ServletException aus {if (codieren! Antwort.SetContentType ("text/html; charSet ="+codierung); } chain.dofilter (Anfrage, Antwort); } public void destroy () {this.encoding = null; this.FilterConfig = null; }}8.HiNRNATEUTIL.JAVA -Quellcode:
Paket com.xqh.util; import org.hibernate.hibernateException; import org.hibernate.Session; import org.hibernate.sessionFactory; SessionFactory Factory = null; // statische Blockstatik {try {// Hibernate -Konfigurationsdateikonfiguration laden cfg = new configuration (). Configure (); // SessionFactory Factory = cfg.buildSessionFactory () instanziiert; } catch (hibernateException e) {e.printstacktrace (); }} / *** Session -Objekt erhalten* @return Session Object* / public statische Sitzung getSession () {// Wenn SessionFacroty nicht leer ist, aktivieren Sie Sitzungssitzung = (Factory! = NULL)? factory.openSession (): null; Rückgabesitzung; } / *** SessionFactory -Objekt erhalten* @return SessionFactory -Objekt* / public static SessionFactory GetSessionFactory () {return factory; } / *** Sitzung schließen* @Param Session Object* / public static void clossession (Sitzungssitzung) {if (Sitzung! // Sitzung schließen}}}}9.HiNRNATE.CFG.XML Quellcode:
<xml Version = '1.0' coding = 'utf-8'?> <! docType hibernate-configuration public "-// hibernate/hibernate configuration dtd 3.0 // en" "http://hibernate.sourceforge <ssions-factory> <!-Dialekt-> <Eigenschaft name = "Dialekt"> org.hibernate.dialect <!-Datenbankverbindungskennwort-> <Eigenschaft name = "connection.password"> 1120 </property> <!-Datenbanktreiber-> <Eigenschaft name = "connection.driver_class"> com.mysql.jdbc.driver </Property> <!-Print SQL Anweisung-> <Eigentum name = "show_sql"> True </achhot> </achproby> <! name = "hibernate.hbm2ddl.auto"> update </property> <!-Mapping-Datei-> <maping ressourcen = "com/xqh/modell/medizin
10.Log4j.Properties Quellcode:
### Direkte Protokollnachrichten an STDOut ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %C {1}: %l - %M %N ### Direktnachrichten an Hibernate.log #### log4j.appender.file = org.apache.log4J.FileAppender#log4j.appender.file.file = hibernate.log#log4j.appender.file.layout = org.apache.log4j.patterlayout#Log4j.Andender.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout.Layout %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=warn, stdout#log4j.logger.org.hibernate=info#log4j.logger.org.hibernate=debug### log HQL query parser Aktivität#log4j.logger.org.hibernate.hql.ast.ast = debug ### log nur die SQL#log4j.logger.org.hibernate.sql = Debug ### Log JDBC Bind -Parameter ####log4j.logger.org.hibernate.type=info#log4j.logger.org.hibernate.type=debug### log schema export/update ####log4j.logger.org.hibernate.tool.hbm2ddl=debug### log HQL parse Trees#log4j.logger.org.hibernate.hql = debug ### log cache Aktivität #### log4j.logger.org.hibernate.cache = debug ### log Transaktionsaktivität#log4j.Logger.org.org.hibernate.transaction = Debug ## ## Log JDBC Ressourcenressourcen Akquisition#log4j.logger.org.hibernate.jdbc = debug ## Aktivieren Sie die folgende Zeile, wenn Sie die Verbindung nachverfolgen möchten.11.Index.jsp Quellcode:
<%@ page Language = "java" contentType = "text/html" pageCoding = "gbk"%> <! docType html public "-// w3c // dtd html 4.01 transitional // en"> <html> <Head> batch> batch add drogeninformationen add drogeninformationen add drogeninformationen </title> </title </title </title </title </title </title </title> </title </title </title </title </title </title </title </title </title </title </title> </title </title> </title </title </title </title </title </title> </tital #Ebebeb; Schriftfamilie: Verdana; Schriftgröße: 12px; Hintergrundfarbe: #ebebeb; Farbe: Schwarz; Zeilenhöhe: 20px; Höhe: 30px;} </style> <script type = "text/javaScript"> Funktion add () {var a = document.getElementById ("a"); var b = document.getElementById ("b"); B.Nerhtml += A.innerhtml; } function record () {var a = document.getElementById ("a"); var b = document.getElementById ("b"); var stra = a.rnerhtml; var strb = b.Nerhtml; B.Nerhtml = strb.substring (0, strb.length - stra.Length); } function Save (Formname) {für (i = 0; i <Formname.length; i ++) {if (Formname.elements [i] .Value == "") {alert ("Bitte füllen Sie die vollständigen Informationen aus!"); false zurückgeben; }}} </script> </head> <body onload = "add ()"> <form action = "savemedicin" methode = "post" Onsubmit = "return save (this);"> <table align = "center" cellpadding = "3" cellpacing = "1"> <tr> <td align = "center" </</</<H1> batch adddrogeninformation </tdddrock. <tr> <td> <div id = "b"> </div> </td> </td> </tr> <tr> <td> <input type id = "a" style = "display: none"> <table align = "center"> <tr> <td> Name: </td> <td> <Eingabe type = "text" name = "name" size = "13"> </td> <td> preiseinheit preis: </td> <td> <eingabe type = "Text" <td> <Eingabe type = "text" name = "factoryAdd" size = "30"> </td> </tr> </table> </div> </body> </html>12.Result.jsp Quellcode:
<%@ page language="java" contentType="text/html" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>Result Information</title> <!-- <link rel="stylesheet" type="text/css" href = "styles.css"> -> </head> <body> <div align = "center"> <font color = "rot" size = "12px;" style = "font-weight: BOLD;"> $ {info} </font> <br> <br> <br> <br> <br> <a href = "index.jsp"> return </a> </div> </body> </html>13. Datentabelle Tb_Medicine_Batch Struktur:
14. Screenshot der Ergebnisse des Programmbetriebs:
Ich hoffe, dass die Beschreibung in diesem Artikel für Java -Programme aller hilfreich ist, die auf dem Hibernate -Framework basieren.