Este artigo descreve o método de hiberna para adicionar dados em lotes. Compartilhe -o para sua referência, como segue:
1. Hibernate_016_batchadddata estrutura de diretório de diretório:
2. O pacote JAR introduzido no diretório Lib:
3. Código fonte de MedicinedAo.java:
pacote com.xqh.dao; importar java.util.list; importar org.hibernate.session; importar com.xqh.model.medicine; import com.xqh.util.hibernateutil;/** *** Savemedicines (List <Pedy> ms) {sessão session = null; if (ms! = null && ms.size ()> 0) {try {session = hibernateutil.getSession (); // Get Session Session.BegIntransaction (); // Ligue as coisas Medicine Medicine = NULL; // Crie um objeto de medicamento // loop o objeto de drogas para (int i = 0; i <ms.size (); i ++) {medicamento = (medicamento) ms.get (i); // Obtenha a sessão de drogas.Save (Medicine); // Salvar o objeto de drogas // O lote de objetos inseridos é imediatamente gravado no banco de dados e na memória livre se (i % 10 == 0) {session.flush (); session.clear (); }} session.gettransaction (). Commit (); // Envie coisas} catch (Exceção e) {E.printStackTrace (); // Print Error Message Session.gettransaction (). Rollback (); // um erro recairá a coisa} finalmente {hibernateutil.closSession (sessão); // Fechar sessão}}}}4. Medicine.Java Código fonte:
pacote com.xqh.model;/*** Classe de persistência do medicamento*/Public Class Medicine {ID inteiro privado; // Nome do número de identificação Private String Nome; // Nome do medicamento Preço duplo privado; // preço Private String FactoryAdd; // Endereço de fábrica public integer getId () {return id; } public void SetId (ID inteiro) {this.id = id; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } public Double getPrice () {Return Price; } public void setPrice (preço duplo) {this.price = price; } public string getFactoryAdd () {return factoryAdd; } public void setFactoryAdd (String FactoryAdd) {this.FactoryAdd = FactoryAdd; }}5. Medicine.hbm.xml Código fonte:
<? xml versão = "1.0"?> <! Doctype hibernate-mapping public "-// Hibernate/hibernate mapeamento dtd 3.0 // pt" "http://hibernate.sourceforge.net/hibernate tabela = "tb_medicine_batch"> <id name = "id"> <generator/> </id> <propriedade name = "name" não-null = "true" length = "200"/> <names name = "price" não-null = "true"/> <nome da propriedade "" fábricas "=" 200 "/> </class> </hibrnate"
6.SaveMedicine.java Código fonte:
package 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;public class SaveMedicine extends HttpServlet { private static final long serialVersionUID = 3743334039515411666L; public void DoPost (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {// Nome do medicamento nomes de string [] = request.getParameTervArs ("nome"); // preços de cordas de preço [] = request.getParameTerValues ("preço"); // String de endereço da fábrica Adds [] = request.getParameTerValues ("FactoryAdd"); // julgamento de validade if (nomes! = Null && preços! = Null && adds! = Null) {if (names.length == preços.length && names.length == adds.Length) {// instanciam uma lista de coleta de uma lista <peded> ms = new ArrayList <pistery> (); Medicamento m = nulo; // objeto de droga // instanciam o objeto de drogas por sua vez e adicione -o à coleção para (int i = 0; i <names.length; i ++) {m = new Medicine (); // instanciar o medicamento // atribui o atributo M.SetName (nomes [i]); M.SetPrice (Double.parseDouble (preços [i])); M.SetFactoryAdd (adiciona [i]); M.Add (M); // Adicionar ao conjunto} // instanciar o objeto MedicinedAo MedicinedAo Dao = new MedicineDao (); Dao.SaveMedicines (MS); // LOTA SALVAR O SOITE DE DRACO. }} // forward (solicitação, resposta); }}7.
/ * * Para alterar este modelo, escolha Ferramentas | Modelos * e abra o modelo no editor. */pacote com.xqh.util; importar java.io.ioexception; importar javax.servlet.filter; importar javax.servlet.filterchain; importar javax.servlet.filterConfig; import javax.servlet.servlet.ervleTexception; import.ServletLeTle; * Filtro de codificação de caracteres */classe pública CaracterencodingFilter implementa filtro {String protegida Encoding = null; FilterConfig protegido FilterConfig = NULL; public void init (filterConfig filterConfig) lança servletexception {this.filterconfig = filterConfig; this.Encoding = filterConfig.getInitParameter ("codificação"); } public void Dofilter (Solicitação de servletRequest, resposta servletResponse, cadeia de filtro) lança IoException, servletexception {if (coding! Response.setContentType ("Text/html; charset ="+codificação); } cadeia.dofilter (solicitação, resposta); } public void destruir () {this.Encoding = null; this.FilterConfig = null; }}8.Bernateutil.java Código fonte:
pacote com.xqh.util; import org.hibernate.hibernateException; importar org.hibernate.session; importar org.hibernate.sessionFactory; importar org.hibernate.cfg.configuration;/** ** ** * * nulo; // Bloco estático estático {try {// Carregar configuração de arquivo de configuração de hibernato cfg = new Configuration (). Configure (); // fábrica instanciada sessionfactory = cfg.buildSessionFactory (); } catch (hibernateException e) {e.printStackTrace (); }} / *** Obtenha objeto de sessão* @return Session Object* / public static session getSession () {// se sessionfacroty não estiver vazio, ativar sessão sessão sessão = (Factory! = NULL)? Factory.oPensession (): NULL; sessão de retorno; } / *** Obtenha objeto SessionFactory* @return SessionFactory Object* / public static sessionFactory getSessionFactory () {return Factory; } / *** Fechar sessão* @param session objeto* / public static void Closesession (Sessão) {if (session! = Null) {if (session.isopen ()) {session.close (); // Fechar sessão}}}}9.Ibernate.cfg.xml Código fonte:
<? xml versão = '1.0' Encoding = 'utf-8'?> <! <Session-Factory> <!-dialect-> <propriedade name = "dialect"> org.hibernate.dialect.mysqldialect </property> <!-conexão com o banco de dados-> <names name = "conexão.url"> jdbc: mysql: // lochost: 3306/learl "<!-DataSase: <!-senha de conexão com o banco de dados-> <propriedade name = "Connection.Password"> 1120 </propriedade> <!-driver de banco de dados-> <propriedade name = "Connection.driver_class"> com.mysql.jdbc.driver </propriedade> <!-Print sql declaração-> <Nome da propriedade = "Show_SQL"> True </sulper> <! name = "hibernate.hbm2ddl.auto"> update </propriedade> <!-arquivo de mapeamento-> <mapping Resource = "com/xqh/model/medicine.hbm.xml"/> </session-factory> </hibernate-configuration>
10.Log4J.Properties Código fonte:
### Mensagens de log direto para stdout ### log4j.appender.stdout = org.apache.log4j.consoleppenderLog4j.appender.stdout.target = system.outLog4j.appender.stdout. %t.stdout.apache.log4j.patternLayoutlog4j.Apender.stdout.stdation.Apache.Log4j.patternLayoutlog4j.Apnder.StDout.StDout.Apache.Apache.Log4j.patternLayoutlog4J.Apnder.stdout.StDout.StDOUT.APACHACHATE.LOG4J.PatternLayoutLog4. %C {1}: %L - %M %N ### Mensagens diretas para arquivar hibernate.log ####log4j.appender.file=org.apache.log4j.FileAppender#log4j.appender.file.File=hibernate.log#log4j.appender.file.layout=org.apache.log4j.PatternLayout#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %C {1}: %L - %M %N ### Defina os níveis de log - para mais alterações detalhadas de registro detalhado 'Info' para 'Debug' ### log4j.rootlogger = warn, stdout#log4j.Logger.org.ibug.hibug.hibarnate = info#log4j.logger.org.hibernate = debug ##- hornate Atividade#log4j.logger.org.hibernate.hql.ast.ast = Debug ### Log apenas o SQL#log4j.logger.org.hibernate.sql = Debug ### Log JDBC Parâmetros de ligação #### log4j.logger.org.hibernate.type = info#log4j.logger.org.hibernate.type = Debug ### Log Schema Export/Update #### LOG4J.LOGGER.org.hibrinate.tool.hbm2ddl = Debug ## Log HQL Árvores#log4j.logger.org.hibernate.hql = Debug ### Atividade do cache do log #### log4j.logger.org.hibernate.cache = Debug ### Atividade de transação#log4j.logger.org.hibernate.transaction = depuração ### log Aquisição#log4j.logger.org.hibernate.jdbc = Debug ## Enable a seguinte linha se desejar rastrear a conexão #######ao usar DriverManageRerConnectionProvider #### log4j.logger.org.hibernate.Connection.DriverManagConnection11.index.jsp Código fonte:
<%@ página linguagem = "java" contentType = "text/html" PageEncoding = "gbk"%> <! #EBeBeB; Fonte-família: Verdana; tamanho de fonte: 12px; Background-Color: #EBeBEB; Cor: preto; altura de linha: 20px; Altura: 30px;} </style> <script type = "text/javascript"> function add () {var a = document.getElementById ("a"); var b = document.getElementById ("b"); B.InnerHtml += A.innerHtml; } função reduz () {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); } função salvar (formname) {for (i = 0; i <formname.length; i ++) {if (formname.elements [i] .Value == "") {alert ("Por favor, preencha a informação completa!"); retornar falso; }}} </script> </ad Head> <corpo onLload = "add ()"> <form ação = "saveMedicine" method = "post" onsubMit = "return save (this);"> <tabela align = "Center" Cellpadding = "3" Cellaping = "1"> <tr> <t> <tgin> center "center"> center ">" </tr> <tr> <td> <div id = "b"> </div> </td> </td> </tr> <tr> <td> <input type = "button" value = "Adicione uma linha" onclick = "add ()"> <input type = "" "=" Reduce () "> <input> </tabela> </form> <div id = "a" style = "display: None"> <table align = "Center"> <tr> <td> Nome: </td> <td> <input type = "text" name = "name" size = "13"> </td> <td> unidade de price: </td> <td> <input 3 " Endereço da fábrica: </td> <td> <input type = "text" name = "factoryAdd" size = "30"> </td> </tr> </tabela> </div> </body> </html>12.Result.jsp Código fonte:
<%@ página linguagem = "java" contentType = "text/html" pageEncoding = "gbk"%> <! href = "styles.css"> -> </head> <body> <div align = "Center"> <font color = "Red" size = "12px;" style = "font-weight: BOLD;"> $ {info} </font> <br> <br> <br> <br> <br> <a href = "index.jsp"> retornar </a> </div> </body> </html>13. Tabela de dados tb_medicine_batch estrutura:
14. Captura de tela dos resultados da operação do programa:
Espero que a descrição deste artigo seja útil para a programação Java de todos com base na estrutura do Hibernate.