Hibernate EntityManager bleibt bestehen () und die Anzahl der Datenbank-Roundtrips

Im Moment benutze ich den Entitymanager, um eine Liste von Objektentitäten mit meinem Dao in die Datenbank einzufügen.

<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>

Und wenn ich die SQL-Anweisung überwache, indem ich sie in den Anwendungskontext hinzufüge

<code>    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                           <property name="showSql" value="true"/>
        </bean>
    </property>
</code>

Und das Ergebnis in der Konsole wird so aussehen

<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>

Meine Frage ist. Bedeutet dies, dass jedes Mal, wenn ich diese Methode aufrufe, 100-mal ein Roundtrip mit der Datenbank durchgeführt wird, oder nur ein Roundtrip, oder?

Jede Antwort oder Einsicht wäre dankbar.

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage