- pour importer des données dans une base de reporting
- pour consolider ces données pour préparer les rapports
Je fais ma petite recherche sur Internet et trouve plusieurs moyens de réaliser des batchs. Voici les pointeurs que j'ai retenu :
- Un article complet sur le blog Seaview, a Developers Perspective
- Le site Hibernate et sa documentation de référence en anglais et en français.
- En particulier le chapitre 13 en anglais (Batch Processing) et en français (Traitement par paquet)
- Un article du magazine Programmez! : Optimisations Hibernate
Au final, voici un bout de code réutilisable pour l'utilisation de l'objet ScrollableResults :
Session session = HibernateUtil.getSessionFactory().openSession();Si vous avez d'autres suggestions, n'hésitez pas à laisser un commentaire ...
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from TableData t where ...");
ScrollableResults results = query.scroll();
while (results.next()){
// Récupération des données et exploitation
TableData tableData = TableData (results.get()[0]);
...
// Ajout de données consolidées
// => requêtes insert par paquet par Hibernate
...
session.saveOrUpdate(element);
...
}
results.close();
tx.commit();
session.close();
Aucun commentaire:
Enregistrer un commentaire