spring-data JPA: manuel de validation transaction et de redémarrer une nouvelle
J'ai une méthode pour importer les données. Dans le cas où l'importation est grand, il ne peut pas s'exécuter au sein d'une seule opération, sans peut-être entraîner une OutOfMemoryError en raison de l'énorme opération de cache d'instruction.
Ce que je veux, c'est manuellement valider après la n des enregistrements dans le cache d'instruction.
Comment puis-je y parvenir? (de préférence à l'intérieur d'un @Transactionnelle de la méthode).
OriginalL'auteur beginner_ | 2013-02-18
Vous devez vous connecter pour publier un commentaire.
Utilisation
EntityManager.flush()
etEntityManager.clear()
sur chaque Nième itération, de sorte que la session obtient synchronisé à la base de données, et la chache effacé pour empêcher le OOM.Si vous utilisez le mode veille prolongée, vous pouvez également définir la
hibernate.jdbc.batch_size
à une valeur appropriée pour avoir le traitement par lots sur JDBC.Si vous aussi vous voulez s'engager après un lot et d'insister sur un @Transactional méthode, puis restructurer le code ainsi que le @Transactional méthode permet d'obtenir un lot de N enregistrements de la source d'entrée, et d'appeler cette méthode à partir d'une boucle externe. Sinon, vous pouvez utiliser le Printemps
TransactionTemplate
de programmation pour le contrôle des opérations.Ce qui peut être utile: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch15.html
OriginalL'auteur zagyi