Este artículo describe el método de Hibernate para agregar datos en lotes. Compártelo para su referencia, como sigue:
1. Hibernate_016_batchadddata Directorio de programa Estructura:
2. El paquete jar introducido en el directorio lib:
3. MedicineDao.Java Código fuente:
paquete com.xqh.dao; import java.util.list; import org.hibernate.session; import com.xqh.model.medicine; import com.xqh.util.HibernateUtil;//*** Operación de base de datos de medicamentos Class*/public MedicineDao {/*** Ahorro de lote de drogas** @Param MS* LISTA COLLECCIÓN DE LISTA*/CLASE PÚBLIC Savemedicines (List <Andemy> MS) {Session Session = NULL; if (ms! = null && ms.size ()> 0) {try {session = hibernateUtil.getSession (); // Get Session Session.BeginTransaction (); // enciende las cosas medicina medicina = nulo; // Crear un objeto de drogas // encajan el objeto de drogas para (int i = 0; i <ms.size (); i ++) {medicina = (medicina) ms.get (i); // Obtener la sesión de drogas. // Guardar el objeto de drogas // El lote de objetos insertados se escribe inmediatamente en la base de datos y la memoria libre si (i % 10 == 0) {session.flush (); session.clear (); }} session.getTransaction (). commit (); // Enviar cosas} Catch (Exception e) {E.PrintStackTrace (); // Imprimir mensaje de error session.getTransaction (). Rollback (); // un error volverá a rodar la cosa} finalmente {hibernateUtil.clossession (sesión); // Cerrar sesión}}}}4. Medicine.Java Código fuente:
paquete com.xqh.model;/*** Clase de persistencia de drogas*/Medicina de clase pública {ID de entero privado; // Número de identificación Nombre de cadena privada; // Nombre de drogas Precio Precio Doble; // precio de fábrica de cadena privada; // DIRECCIÓN DE FACTORY Public Integer getId () {return id; } public void setid (ID de entero) {this.id = id; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public Double GetPrice () {Return Price; } public void setPrice (doble precio) {this.price = precio; } public String getFactoryAdd () {return factoryAdd; } public void setFactoryAdd (String factoryAdd) {this.FactoryAdd = factoryAdd; }}5. Medicine.hbm.xml Código fuente:
<? xml versión = "1.0"?> < table = "tb_medicine_batch"> <id name = "id"> <generador/> </d> <propiedad name = "name" no-null = "true" longitud = "200"/> <propiedad name = "precio" no-null = "true"/> <Property name = "factoryAdd" longitud = "200"/> </class> </iebernate-mapping>
6.Savemedicine.Java Código fuente:
paquete com.xqh.servlet; import java.io.ioException; import java.util.arrayList; import java.util.list; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import com.xqh.dao.medicineDao; import com.xqh.model.medicine; la clase pública savemedicine extiende httpservlet {private estático final estático largo en suerosionuid = 3743334039154116666l; Public void dopost (httpservletRequest solicitud, respuesta httpservletreSponse) lanza ServletException, ioexception {// nombres de cadena de nombre de drogas [] = request.getParametervalues ("name"); // Precios de precios de cadena [] = request.getParametervalues ("precio"); // La cadena de dirección de fábrica agrega [] = request.getParametervalues ("factoryAdd"); // juicio de validez if (names! = Null && precios! = Null && adds! = Null) {if (names.length == precios.length && names.length == adds.length) {// Instanciar una lista de colecciones de listas <Medicion> ms = new ArrayList <Andement> (); Medicina m = nulo; // objeto de drogas // instanciar el objeto de drogas a su vez y agréguelo a la colección para (int i = 0; i <names.length; i ++) {m = new Medicine (); // instanciar el fármaco // Asignar el atributo m.setName (nombres [i]); M.SetPrice (doble. PARSEDOBLE (precios [i])); M.SetFactoryAdd (agrega [i]); M.Add (M); // Agregar al conjunto} // instanciar el objeto MedicineDao MedicineDao Dao = new MedicineDao (); Dao.Savemedicines (MS); // lote Guardar la solicitud de drogas. }} // reenviar (solicitud, respuesta); }}7. CARACTENCODINGFILTER.JAVA Código fuente:
/ * * Para cambiar esta plantilla, elija Herramientas | Plantillas * y abrir la plantilla en el editor. */paquete com.xqh.util; import java.io.ioException; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterConfig; import javax.servlet.servletException; import javax.servlet.servletRest; import javax.servlet.servlet; Filtro de codificación de caracteres*/clase pública caracterescodingfilter implementa filtro {string protegido encoding = null; FilterConfig protegido FilterConfig = NULL; public void init (filterconfig filtreConfig) lanza ServletException {this.filterConfig = filtreConfig; this.Encoding = FilterConfig.getInitParameter ("Codificación"); } public void dofilter (solicitud de servletRequest, respuesta de servicio de servicio, cadena de filtro de filtro) lanza ioexception, servletException {if (coding! = null) {request.setcharacterEncoding (codificación); respuesta.setContentType ("text/html; charset ="+encoding); } chain.dofilter (solicitud, respuesta); } public void destruye () {this.encoding = null; this.filterConfig = null; }}8.HibernateUtil.Java Código fuente:
paquete com.xqh.util; importar org.hibernate.HibernateException; import org.hibernate.session; import org.hibernate.sessionFactory; import org.hibernate.cfg.configuration;/** * clase de inicialización de hibernado, utilizado para obtener sesión de sesión de sesión de sesión de session y session { fábrica = nulo; // Bloque estático Static {try {// Cargue la configuración del archivo de configuración Hibernate cfg = new Configuration (). Configure (); // Instanciar sessionFactory fábrica = cfg.BuildSessionFactory (); } Catch (HibernateException e) {E.PrintStackTrace (); }} / *** Objeto de sesión Gente* @return Session Object* / public static session getSession () {// Si SessionFacroty no está vacío, habilita la sesión Session Session = (Factory! = NULL)? factory.opensession (): nulo; sesión de regreso; } / *** Object Get SessionFactory* @return SessionFactory Object* / public sessionFactory getSessionFactory () {return factory; } / *** Cerrar sesión* @param Session Object* / public static void Closesession (sesión de sesión) {if (session! = Null) {if (session.isopen ()) {session.close (); // Cerrar sesión}}}}9.Hibernate.cfg.xml Código fuente:
<? xml versión = '1.0' encoding = 'utf-8'?> < <Sessionfactory> <!-Dialect-> <Property Name = "Dialect"> org.hibernate.dialect.mysqldialect </property> <!-Conexión de la base de datos-> <propiedad name = "Connection.url"> jdbc: mysql: // localhost: 3306/Learn </Property> <!-Conexión de la base de la base de la base->> "Nombre de propiedad =" Conexión "Conexión". <!-Contraseña de conexión de base de datos-> <Property name = "Connection.password"> 1120 </property> <!-Database Driver-> <Property Name = "Connection.Driver_Class"> com.mysql.jdbc.driver </Property> <!-Declaración de impresión SQL-> <Property Name = "show_sql"> True </Property> <!-CREACIÓN DE TABLA DE PROPIETA-> <CREACIÓN PROPIEDTA <PROPERTA DE PROPIEDAD name = "Hibernate.hbm2ddl.auto"> Update </Property> <!-Archivo de asignación-> <mapping resource = "com/xqh/model/medicina.hbm.xml"/> </session-factory> </hibernate-configuration>
10.log4j.Properties Código fuente:
### Mensajes de registro directo a stdout ### log4j.appender.stdout = org.apache.log4j.consoleppenderlog4j.appender.stdout.toutget = system.outlog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appender.stdout.conversionpattern = %d @} %c {1}: %l - %m %n ### Mensajes directos para archivar Hibernate.log ### LOG4J.Appender.file = org.apache.log4j.filePepepender#log4j.appender.file.file = hibernate.log#log4j.appender.file.layout = org.apache.log4j.patternlayaut#log4j.appender.file.layout.conversionpattern %C {1}: %L - %m %n ### Establecer niveles de registro - Para obtener un cambio de registro más verboso 'info' a 'debug' ### log4j.rootlogger = warn, stdout#log4j.logger.org.hibernate = info#log4j.logger.org.hibernate = debug ### log hql parser parserer Actividad#log4j.logger.org.hibernate.hql.ast.ast = debug ### log solo los parámetros SQL#log4j.logger.org.hibernate.sql = debug ### log JDBC Parámetros de enlace ### log4j.logger.org.hibernate.type = info#log4j.logger.org.hibernate.type = debug ### log esquema export/actualización ### log4j.logger.org.hibernate.tool.hbm2ddl = debug ### log hql parse Trees#log4j.logger.org.hibernate.hql = Debug ### Actividad de caché de log #### log4j.logger.org.hibernate.cache = debug ### Actividad de transacción de registro#log4j.logger.org.hibernate.transaction = debug ### log jdbc recurso recurso adquisición#log4j.logger.org.hibernate.jdbc = debug ## Habilite la siguiente línea si desea rastrear la conexión ###### fugas cuando se usa drivermanagerconnectionProvider #### log4j.logger.org.hibernate.connection.divermanagerconnection = trace = trace11.index.jsp Código fuente:
<%@ page lenguaje = "java" contentType = "text/html" pageEncoding = "gbk"%> <! DocType html public "-// w3c // dtd html 4.01 transitional // en"> <html> <Et> <title> Batch Agregar información de medicamento </title> <syle tipo = "text/csss" #EBEBB; Font-Family: Verdana; tamaño de fuente: 12px; Color de fondo: #ebebeb; Color: negro; Línea de altura: 20px; altura: 30px;} </style> <script type = "text/javaScript"> function add () {var a = document.getElementById ("A"); var b = document.getElementById ("b"); b.innerhtml += a.innerhtml; } función reduce () {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); } function save (FormName) {for (i = 0; i <formname.length; i ++) {if (formname.elements [i] .value == "") {alert ("¡Complete la información completa!"); devolver falso; }}} </script> </head> <body onload = "add ()"> <form de acción = "savemedicine" método = "post" onsubMit = "return save (this);"> <table align = "centro" celular de celda = "3" cellpacing = "1"> <tr> <td align = "center"> <br> <h1> batch información </h1/h1> h1>/h1>/h1> </tr> <tr> <td> <div id = "b"> </div> </td> </td> </tr> <tr> <tr> <td> <input type = "button" value = "Agregar una línea" en ciclk = "add ()"> <input type = "button" value = "reduce ()"> <input type = "someter" valor = "batch batch add to database" <<td> </ttur. </form> <div id = "a" style = "display: none"> <table align = "center"> <tr> <td> name: </td> <td> <input type = "text" name = "name" size = "13"> </td> <td> precio unitario: </td> <td> <input type = "text" name = "size" size = "13" <<td> </td> <td> <input type = "text" name = "factoryAdd" size = "30"> </td> </tr> </table> </div> </body> </html>12.Result.jsp Código fuente:
<%@ page lenguaje = "java" contentType = "text/html" pageEncoding = "gbk"%> <! DocType html público "-// w3c // dtd html 4.01 transitional // en"> <html> <Head> <title> Información de resultados </Título> <!-<Link Rel = "StylesHeet" href = "styles.css"> -> </head> <body> <div align = "center"> <font color = "rojo" size = "12px;" style = "Font-Weight: Bold;"> $ {info} </font> <br> <br> <br> <br> <br> <a href = "index.jsp"> return </a> </div> </body> </html>13. Tabla de datos TB_MEDICINE_BATCH STRUCTURA:
14. Captura de pantalla de los resultados de la operación del programa:
Espero que la descripción en este artículo sea útil para la programación Java de todos en función del marco Hibernate.