2010-07-28 23 views
24

Sono piuttosto nuovo sugli ORM. Ho appena iniziato a leggere libri e documenti su Java Persistence API con Hibernate.Quando dovremmo chiudere EntityManagerFactory?

Mi sono chiesto, la chiusura di EntityManagerFactory è simile alla chiusura della connessione del database jdbc?

Dovremmo chiuderlo dopo ogni persistere/aggiornamento/eliminazione o no? Se non lo chiudiamo, la connessione al database rimarrà aperta?

+0

Se un EM tiene Connessioni come può rimanere aperta una connessione se "host" o "genitore" sono chiusi? Ha senso ? –

risposta

32

Mi sono chiesto, la chiusura dello EntityManagerFactory è simile alla chiusura della connessione al database jdbc?

Questo non è esattamente vero ma chiudere un EntityManagerFactory sarebbe più vicino a distruggere un intero lotto di connessioni. Se vuoi pensare a una connessione JDBC, dovresti pensare a EntityManager.

Dovremmo chiuderlo dopo ogni persistenza/aggiornamento/eliminazione oppure no?

creazione di un EntityManagerFactory è un'operazione piuttosto costoso e dovrebbe essere fatto una volta per la durata dell'applicazione (si close alla fine della domanda). Quindi no, non dovresti chiuderlo per ogni operazione persist/update/delete.

Il EntityManagerFactory è creato una volta per tutte e di solito si ottiene un EntityManager per ogni richiesta, che è chiuso alla fine della richiesta (EntityManager per richiesta è il modello più comune per un'applicazione client/server multiutente).

Se non lo chiudiamo, la connessione al database rimarrà aperta?

Come accennato, è il EntityManager che è in realtà associato ad una connessione al database e chiudendo la EntityManager sarà effettivamente rilasciare la connessione JDBC (il più delle volte, tornare a una piscina).

Problemi correlati