Bu, JPA uygulamasına ve yapılandırmasına bağlıdır.
EclipseLink'te varsayılan olarak bir bağlantı sadece etkin (kirli) işlem süresince tutulur. yani ilk değişiklikten veya kilitlemeden, taahhüt veya geri alma işlemine kadar. İşlem dışı sorgularda, talep üzerine bir bağlantı elde edilir ve sorgu yürütme işleminden sonra iade edilir. Bu, bağlantı havuzunun maksimum kullanımını sağlar. Yani, normalde em.close() hiçbir şey yapmaz.
Bunu "eclipselink.jdbc.exclusive-connection.mode" persistence unit özelliğini kullanarak yapılandırabilirsiniz. "Always", EntityManager'ın ömrü için bir bağlantı tutacaktır.
İşlemler için farklı bağlantı havuzlarını ve işlem dışı okumaları kullanabilirsiniz. Bu, JTA'lar için yararlı değildir, çünkü JTA'lar için olmayan bir DataSource kullanabilirsiniz.
Hazırda bekletme stratejilerinin bu açıklamasını Hibernate ile buldum: http://docs.jboss.org/hibernate/stable/core.old/reference/en/html/transactions-connection-release.html – GlenPeterson