Domanda

Ehi, sto sviluppando un'applicazione desktop usando Spring e Hibernate e ho un problema con l'avvio pigro. Ho cercato nel Web e ogni soluzione è correlata alla sessione aperta nel modello di visualizzazione, ma non riesco a utilizzare questo modello. Ho anche cercato di ottenere il sessionfactory dal HibernateTemplate , ma mi viene restituita una sessione disconnessa.

Qualcuno conosce altra soluzione?

È stato utile?

Soluzione

Suggerirei in sostanza di avere due soluzioni:

  1. Prendi accordi per mantenere aperta una sessione di ibernazione quando accedi a un oggetto o una raccolta inizializzata in modo pigro. Ciò significa che dovrai contrassegnare attentamente i limiti delle tue transazioni nel tuo codice, alla "sessione aperta in vista" modello. La primavera lo rende possibile, ma in un'applicazione desktop non sarà così semplice come un'applicazione web in cui i confini delle transazioni sono un po 'più evidenti.

  2. Disattiva tutta l'inizializzazione lazy per i tuoi oggetti persistenti in Hibernate.

L'opzione 2 potrebbe comportare un accesso non necessario al database e l'opzione 1 significa che devi studiare seriamente il flusso di lavoro e i casi d'uso.

Spero che ti aiuti!

Altri suggerimenti

Un'opzione è chiamare Hibernate.initialize () sulle entità o sulle raccolte per forzare l'inizializzazione. Dovresti farlo prima di riportare i dati alla tua vista. Lo prenderei attentamente in considerazione, poiché genererà molte dichiarazioni SQL nel database.

Potresti voler esaminare usando " fetch " nelle tue query HQL o configura la modalità di recupero su " desideroso " nelle tue mappature (credo che sia FetchMode.EAGER in JPA o lazy = " false " in hbm.xml).

@Jose: non gestire la sessione nel tuo ThreadLocal. Usa SessionFactory.getCurrentSession () e configura Hibernate per utilizzare il " thread " SessionContext.

Ho avuto un problema molto simile e non sono riuscito a trovare una soluzione davvero appropriata. Ne ho trovato uno mio che combinava molti approcci diversi trovati sul Web e li ha pubblicati sul mio blog.

Mi dispiace, non ho inserito tutto qui, ma è molto difficile farlo più e più volte in tutti i forum in cui ho trovato persone che hanno questo o un problema simile

Caricamento pigro remoto con ibernazione e primavera

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top