Bonjour,
J'utilise JPA/hibernate 3 , et j'ai une requête qui prends 20 secondes pour récupérer 100 000 (cent miles enregistrement) d'une table (10 colonnes)
alors que quand j'exécute la requête générée par hibernate directement dans la base, le resultat est instantané.
je voudrais savoir est ce qu'il y a moyen d'optimiser cette requête?
Merci d'avancce
ci-aprés les bouts de code utilisés
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class JPAUtil { private static final EntityManagerFactory emFactory; static { try { emFactory = Persistence.createEntityManagerFactory("org.hibernate.events.jpa"); }catch(Throwable ex){ System.err.println("Cannot create EntityManagerFactory."); throw new ExceptionInInitializerError(ex); } } public static EntityManager createEntityManager() { return emFactory.createEntityManager(); } public static void close(){ emFactory.close(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 EntityManager em = JPAUtil.createEntityManager(); String myQuery= " from " + MyObject.class.getName(); myQuery= myQuery+ " where"; myQuery= myQuery+ " myDate= :date"; Query query= em.createQuery(myQuery); query.setParameter("myDate", new Date()) list= query.getResultList();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @Entity @Table(name = "My_TABLE") public class MyObject.class.getName{ @Id @Column(name = "ID_COL") private Long sequenceId; @Column(name = "My_COLUMN2") private String aseID; . . . }
Partager