6

è una connessione restituito solo al pool di connessioni in un'applicazione JPA se chiamoQuando viene restituita una connessione al pool di connessioni in un'applicazione JPA?

entityManager.close(); 

?

È possibile che la connessione sostenga il cambio di entità durante il suo ciclo di vita?

grazie in anticipo mojoo

+2

Ho trovato questa descrizione delle strategie di rilascio della connessione con Hibernate: http://docs.jboss.org/hibernate/stable/core.old/reference/en/html/transactions-connection-release.html – GlenPeterson

risposta

4

Le specifiche APP non definisce tali cose e la sua fino alla realizzazione per gestire le connessioni. Quando una transazione è attiva, si può essere sicuri che la connessione sia la stessa fino al commit, per ovvi motivi. Una volta terminato, il txn può essere restituito, oppure può essere trattenuto a seconda dell'implementazione (e non si menziona il proprio)

2

Dipende dall'implementazione e dalla configurazione di JPA.

In EclipseLink per impostazione predefinita una connessione viene mantenuta solo per la durata di una transazione (sporca) attiva. vale a dire dalla prima modifica o blocco, fino al commit o al rollback. Per le query non transazionali, una connessione viene acquisita su richiesta e restituita dopo l'esecuzione della query. Ciò consente l'utilizzo massimo del pool di connessioni. Quindi, normalmente em.close() non fa nulla.

È possibile configurarlo utilizzando la proprietà dell'unità di persistenza "eclipselink.jdbc.exclusive-connection.mode". "Sempre" manterrà una connessione per la vita di EntityManager.

È inoltre possibile utilizzare diversi pool di connessione per le transazioni, anziché le letture non transazionali. Ciò è utile con JTA, poiché è possibile utilizzare un DataSource non JTA per le letture.

Problemi correlati