grails e mysql elaborazione batch
-
26-09-2019 - |
Domanda
Sto cercando di implementare il consigli che si trovano in questo grande post del blog per l'elaborazione batch in Grails con MySQL . Il problema che sto avendo è che l'inclusione di inviti periodici a Session.clear () nel mio circuito provoca org.hibernate.LazyInitializationException di essere gettato. C'è una citazione in basso nella sezione commenti della pagina:
Sei secondo punto su potenzialmente causando bugie è assolutamente vero. Se si sta facendo altre cose al di fuori di importazione al thread corrente, si vorrà fare in modo di ricollegare oggetti per la sessione dopo stai facendo il tuo compensazione.
Ma come posso fare? Qualcuno può aiutarmi a capire come specificamente a "riattaccare tutti gli oggetti per la sessione dopo che sono compensazione fatto?
Sto interessati anche a parallelizzare il processo di inserimento dati in modo che possa prendere vantaggio di avere un processore multicore. Qualcuno può fornire consigli su come farlo in Grails?
Soluzione
Grails ha un paio di metodi per aiutare con questo (si leva ibernazione sotto le coperte).
Se si conosce un oggetto è indipendente, è possibile utilizzare il allegare metodo per ricollegarlo.
Se hai apportato modifiche all'oggetto mentre era distaccato, è possibile utilizzare merge .
Se per qualsiasi motivo, non siete sicuri se un oggetto è collegato alla sessione, è possibile utilizzare il metodo link testuale per scoprire se si è o non è.
Potrebbe anche essere la pena di rivedere la documentazione di Hibernate su sessione .