High-performance Java Persistence.pdf ((free)) -
This is the classic trap. You fetch a list of Post entities, and then for each post, you access the post.comments list. If lazy loading is enabled (as it should be), Hibernate triggers a separate SQL query for every post to fetch its comments.
int updatedEntities = entityManager.createQuery( "update Post set status = :newStatus where createdOn < :date") .setParameter("newStatus", Status.OLD) .setParameter("date", LocalDate.now().minusDays(30)) .executeUpdate(); // Sends 1 SQL statement. High-performance Java Persistence.pdf
