Necesito consumir una gran cantidad de datos de un archivo CSV diario. El archivo CSV contiene alrededor de 120,000 registros. Esto se ralentiza a paso de tortuga cuando se utiliza hibernación. Básicamente, parece que hibernate está haciendo un SELECT antes de cada INSERT (o UPDATE) al usar saveOrUpdate(); para cada instancia que persista con saveOrUpdate(), se emite un SELECT antes del INSERT real o una ACTUALIZACIÓN. Puedo entender por qué está haciendo esto, pero es terriblemente ineficiente para hacer un procesamiento masivo, y estoy buscando alternativasInserción masiva O actualización con hibernación?
Estoy seguro de que el problema de rendimiento reside en la forma en que estoy usando Hibernate para esto, ya que tiene otra versión que funciona con SQL nativo (que analiza el CSV de la misma manera) y que literalmente ejecuta círculos alrededor de esta nueva versión)
Entonces, para la pregunta real, ¿una alternativa de hibernación a mysqls "INSERTAR ... ON DUPLICATE "¿existe sintaxis?
O, si elijo hacer SQL nativo para esto, ¿puedo hacer SQL nativo dentro de una transacción de hibernación? Es decir, ¿admitirá commit/rollbacks?
¿qué es lo que quiere decir con "hibernación está haciendo un SELECT antes de cada inserción individual (o actualización) cuando se utiliza saveOrUpdate()". ?¿podría publicar el código que está utilizando para guardar los datos? por cierto, 120k registros es una gran cantidad de datos! – Rakesh
Acabo de encontrar un artículo sobre [procesamiento por lotes en hibernación] (http://onetouchcode.com/2016/08/21/batch-processing-example-in-hibernate/) – Shailendra