Après quelques heures, j'ai trouvé le problème. La taille de récupération par défaut d'OJDBC est de 10, donc avec l'augmentation du nombre de lignes à récupérer, le temps augmente très rapidement.
Ce qui est étrange :c'était ma première idée, j'ai donc essayé de définir <property name="eclipselink.jdbc.fetch-size" value="100"/>
dans persistence.xml
. Cela n'a pas fonctionné, alors j'ai sauté sur d'autres solutions. Aujourd'hui, je l'ai défini sur une seule requête par query.setHint("eclipselink.jdbc.fetch-size", 100)
et ça marche.