Muszę spożywać dość duże ilości danych z codziennego pliku CSV. Plik CSV zawiera około 120 000 rekordów. Powoduje to spowolnienie indeksowania podczas korzystania ze stanu hibernacji. Zasadniczo wygląda na to, że hibernacja wykonuje SELECT przed każdym pojedynczym INSERT (lub UPDATE) przy użyciu saveOrUpdate(); dla każdej instancji utrzymywanej przez saveOrUpdate(), SELECT jest wydawane przed faktycznym INSERT lub UPDATE. Mogę zrozumieć, dlaczego to robi, ale jest to strasznie nieefektywne w przetwarzaniu zbiorczym i szukam alternatyw.Wstawianie zbiorcze LUB aktualizowanie za pomocą hibernacji?
Jestem przekonany, że problem z wydajnością leży w sposobie, w jaki używam do tego hibernacji, ponieważ dostałem kolejną wersję działającą z natywnym SQL (który parsuje CSV w ten sam sposób) i jego dosłownie działającymi kółkami wokół nowej wersji)
Tak więc, do faktycznego pytania, czy hibernacja jest alternatywą dla mysqlów "INSERT ... ON DUPLICATE "istnieje składnia?
Lub, jeśli zdecyduję się na natywny SQL dla tego, czy mogę zrobić natywny SQL w ramach transakcji hibernacji? Czy to oznacza, że obsługuje zatwierdzanie/wycofywanie zmian?
co masz na myśli przez „hibernacji robi SELECT przed każdym wkładki (lub aktualizacji) przy użyciu saveOrUpdate().” ?czy możesz opublikować kod, którego używasz do zapisywania danych? przy okazji zapisy 120k to ogromne dane! – Rakesh
Właśnie znalazłem artykuł o [przetwarzaniu wsadowym w hibernacji] (http://onetouchcode.com/2016/08/21/batch-processing-example-in-hibernate/) – Shailendra