/ / jpa jarné zavádzanie - hibernácia insert pomaly - databáza, hibernácia, jarné bootovanie, vloženie, jar-data-jpa

jpa spring boot - hibernate insert slow - databáza, hibernácia, spring-boot, vložka, spring-data-jpa

Mám tri zoznamy entít, ktoré sa snažím uložiť do databázy.

celkovo je to asi 1000 entít, ktoré musí vytrvať.

entityRepo.save(EntityList);

Dokončenie však trvá 4-5 minút. - A všimol som si, že robí niektoré výbery pred vložením, predpokladám, že je to hibernácia, špinavá kontrola, či je potrebné aktualizovať alebo vložiť.

Každopádne to zakázať a zvýšiť rýchlosť hibernácie vložiť?

hľadali začervenanie, ale nie ste si istí, ako to urobiť pri ukladaní celého zoznamu naraz?

odpovede:

1 pre odpoveď č. 1

Ak sú všetky entity rovnaké, mali by ste zapnúť dávkové vkladanie. Tu je pár článkov, ktoré vám pomôžu začať. Ide predovšetkým o pridanie konfigurácie.

http://memorynotfound.com/hibernate-jpa-batch-insert-batch-update-example/ https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/chapters/batch/Batching.html


0 pre odpoveď č. 2

Máte pravdu, keď hovoríte, že špinavá kontrola spôsobuje čítanie z databázy. Ak používate štandardný režim dlhodobého spánku Session aby ste vytrvali vo svojich entitách, bude ich Hibernate spravovať normálne.

Ak sa tomu chcete vyhnúť, najjednoduchším prístupom je pravdepodobne otvoriť StatelessSession a používať org.hibernate.StatelessSession.insert, Toto nevyužíva vyrovnávaciu pamäť prvej úrovne, a preto nie je potrebné špinavé kontrolné entity.

Môžete to dosiahnuť volaním SessionFactory#withStatelessOptions získať inštanciu StatelessSessionBuilder, Potom môžete zavolať org.hibernate.StatelessSessionBuilder.openStatelessSession.