style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Update Masivo

Hola a todos, espero me puedan ayudar, tengo un problema, necesito actualizar masivamente una gran catidad de registros, tengo el siguiiente codigo para hacerlo pero no se si este bien o talves necesita ser optimizado, porfavor espero me puedan ayudar, estoy trabajando sobre el servidor de Aplicaciones Jboss.

@Override
    public void insertamasivo(List<ArchivoTransaciones> archivos, ArchivosRecolectados archivorecolectado) {
        int contador = 0;
        try {            
            long tiempoInicio = System.currentTimeMillis();

            for (ArchivoTransaciones arch : archivos) {
                arch.setArchivosRecolectadosId(archivorecolectado);
                em.persist(arch);
                if (contador++ % 20 == 0) {
                    em.flush();
                    em.clear();
                }
            }
            long totalTiempo = System.currentTimeMillis() - tiempoInicio;
            System.out.println("El tiempo de demora es :" + (totalTiempo / 60000) + " minutos");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("SE DETUVO EN EL No --> " + contador);
        }

    }
 

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

UPDATE

¿Y por qué no simplemente ejecutar un UPDATE sobre esa «gran cantidad de registros»? Ya sea con JPQL (o ¿HQL?, ya que Hibernate está incluído en JBoss) o SQL nativo.

Ok lo tratare de hacer asi,

Ok lo tratare de hacer asi, pero creo que no puse bien mi proceso, el proceso es el siguiente:

Tengo que sacar con un select * from tabla, todos los registros de cada unas de las tablas de la BD, por cada tabla obtengo una List

, esta lista contiene aproximadamente unos 100 ,000 registros, acada registro se le debe de aplicar un metodo de encripcion es decir
List<Usuarios> li=serviceUsuario.findAll();//Obtengo todos los registros
li=encriptaListObjects(li);//Encripto todos los registros en un metodo especifico
serviceUsuario.actulizarporLotes(li);//Es este metodo deberia de actualizar todos los registros de una manera rapida
Pero al momento de actulizar se tarda demasiado tiempo en recorrer la lista y actulizar uno a uno los registros, (Digo uno a uno ya que creo yo que para cada objeto de la lista contiene un valor diferente de encripcion). Esto lo utilize para guardar muchos registros y el proceso era demasiado rapido asi que me atrevi a cambiar el persist(Object) por el merge(Object), pero no funciono.

built-in functions

Muchos manejadores de base de datos soportan funciones incorporadas (built-in functions) de encriptación/desencriptación que bien podrías utilizar.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">