JdbcTemplate vs hibernate

Fermé
starghof Messages postés 177 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 8 avril 2011 - 4 août 2009 à 10:48
starghof Messages postés 177 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 8 avril 2011 - 4 août 2009 à 12:31
Bonjour,
salut tout le monde .
svp ya t'il qqn qui peut m'aider !!!
j'ai voulu faire une comparaison entre jdbcTemplate(de core de spring) et hibernate (tout seul) pour inserer des millier de lignes dans une table mysql .
j'ai remarqué que l'insersion en hibernate prend beaucoups du temps par rapport à jdbctemplate !!
est ce logique .
help please !

7 réponses

Salut,

Tu peux nous montrer le test que tu as mis en place (ou au moins le détailler) ?
0
starghof Messages postés 177 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 8 avril 2011 4
4 août 2009 à 11:38
le traitement consiste à inserer 100 lignes dans une table mysql;
//////////////////////////////////////////////////////////////////////
pour le jdbc template voilà le test :

TransactionTemplate transactionTemplate = new TransactionTemplate(new DataSourceTransactionManager(dataSource));
transactionTemplate.execute(new TransactionCallback() {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

long timeInMillis1 = System.currentTimeMillis();
for(int j=1;j<=100;j++){
jdbcTemplate.execute("insert into v_j_article values("+j+","+"1,1,1,5,'2009-01-01')");
}

long timeInMillis2 = System.currentTimeMillis();

long timeInMillis3=timeInMillis2-timeInMillis1;
System.out.println(timeInMillis3);



pour hibernate :
Session session = HibernateUtil.currentSession();
long timeInMillis1 = System.currentTimeMillis();
for(int j=1;j<=100;j++){
Transaction tx= session.beginTransaction();
TContact v_j_article = new TContact();
v_j_article.setId_famille(1);
v_j_article.setId_sous_famille(2);
v_j_article.setId_article(4);
v_j_article.setNbr_vente(200);
v_j_article.setMontant_t(System.currentTimeMillis());
v_j_article.setDate(date);
session.save(v_j_article);
tx.commit();
}
long timeInMillis2 = System.currentTimeMillis();

long timeInMillis3=timeInMillis2-timeInMillis1;
System.out.println(timeInMillis3);

//////////////////////////////////////////////////////////

je sais pas si la comparaison est equitable !!!
mais lorsque j'ai fait la comparaison des deux valeurs donnés en ms (timeInMillis3) j'ai remarqué une grande difference !!!

par exemple pour l'insertion des 100 lignes par jdbc template a duré 31millisecondes
par contre pour hibernate elle a duré 3263millisecondes !!!
est ce que ça est logique !!

sinon que doit je changer dans le code exactement pour avoir une comparaison logique !!!
0
starghof Messages postés 177 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 8 avril 2011 4
4 août 2009 à 11:40
j'ai essayé de voir :
https://arnumeral.fr/projet/mediapart
mais l'exemple qui l'a pris ne contient pas jdbc template !
0
Salut,

Le test n'est pas vraiment équitable, Hibernate est bien plus qu'un simple générateur de requêtes...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
starghof Messages postés 177 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 8 avril 2011 4
4 août 2009 à 11:51
d'accord !
mais est ce que vous avez une proposition pour le rendre plus equitable !!!
et surtout concernant les transactions !!!!
0
Il est difficile de faire un test équitable vu q'ils ne doivent pas être utilisés pour les mêmes raisons. Sur le forum de Spring, il présente très bien l'intérêt de chacun.
0
starghof Messages postés 177 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 8 avril 2011 4
4 août 2009 à 12:31
de toute façon merci Anarchunter!
c'est gentil.
je vais voir la possibilité d'ameliorer le test pour avoir des resultats plus precises!
merci.
0