Hibernacja EntityManager persist () i liczba rund w bazie danych
W tej chwili używam programu upoważniającego do wstawienia listy obiektów obiektu do bazy danych za pomocą mojego dao za pomocą kodu takiego jak ten.
<code>@Transaction public void insertBatch(List<EntityObject> o){ for(int i=0;i<o.size();i++){ em.persist(o); if(o.size % 100 == 0){ //equal to JDBC batch size em.flush(); em.clear(); } } } </code>
A kiedy monitoruję instrukcję sql, dodając ją do kontekstu aplikacji
<code> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="true"/> </bean> </property> </code>
A wynik w konsoli będzie wyglądał następująco
<code>Hibernate: insert into TABLE (FIELD1, FIELD2) values (?, ?) Hibernate: insert into TABLE (FIELD1, FIELD2) values (?, ?) ... ... ...//untill reach 100 lines. Hibernate: insert into TABLE (FIELD1, FIELD2) values (?, ?) </code>
Moje pytanie brzmi. Czy to znaczy, że za każdym razem, gdy dzwonię na tę metodę, zrobi ona podróż w obie strony z bazą danych 100 razy, czy też wykona tylko jedną podróż w obie strony, czy może?
Każda odpowiedź lub wgląd byłaby doceniana.
Dzięki.